- 0.0.1. [py2rb] type クラスの動的定義
- 0.0.2. [py2rb] itertools.islice
- 0.0.3. 2022年からの新しいとりくみ
- 0.0.4. WordleをPythonに解かせる
- 0.0.5. Streamlitで作ったWebアプリをコンテナ化してデプロイ(Windows10、Python3.9、Azure Container Registry)
- 0.0.6. カーネルリッジ回帰をnumpyで実装
- 0.0.7. Pythonで理解する計数抜取検査
- 0.0.8. streamlit_timelineを使って、streamlitで年表を作ってみた
- 0.0.9. PyMC3用の環境構築
- 0.0.10. Windows10でpythonを用いた仮想環境の構築方法
- 0.0.11. PythonでSeleniumするときに書いておいたほうがいいコード
- 0.0.12. twitterAPIの取得に苦労したので情報共有します
- 0.0.13. 【Anaconda3】仮想環境で起動したAtomからコードを直接実行する(RDKit)
- 0.0.14. PythonでSeleniumを使ってみる
- 0.0.15. Python でウィンドウの閉じるボタンを無効化する
- 0.0.16. デッキ画像から駒名称を抜き出す【特徴点マッチング編】
- 0.0.17. logging 練習
- 0.0.18. EclipseでPythonのpip installを使う
- 1. EclipseでPython pip installのやりかた
[py2rb] type クラスの動的定義
# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# type (Python)
“`python
@classmethod
def _make_chain(cls, sequence_maker):
if isinstance(sequence_maker, type):
tp = type(‘%sChain’ % sequence_maker.__class__.__name__, (cls,), {
‘sequence_maker’: sequence_maker
})
else:
tp = type(‘FunctionChain’, (cls,), {
‘sequence_maker’: staticmethod(sequence_maker)
})
return tp
“`
https://www.shoe
[py2rb] itertools.islice
# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# islice (Python)
“`python
def _get_by_slice(self, slc):
self.reset()
value = list(islice(self, slc.start, slc.stop, slc.step))
return value
“`
https://qiita.com/shihono/items/1613f7c6c1b096256bd3分かりやすい記事。
# どうする (Ruby)
“`ruby
def islice(iterable, *args)
start = args[0] || 0
stop = args[1] || Float::INFINITY
step = args[2] || 1
cnt = 0
if iterable.is_a?(String)
it = iterable.split(”).to_enum
else
2022年からの新しいとりくみ
備忘録を兼ねて日々のプログラミング生活で行ったことの概要メモを作ることにしました。
すでに多少の公開メンタリティも身につけたので、特に始めることへの躊躇のカベはなかったです。プログラミングをすることが日常になってしまっているのですが、たまに自分のコード体系に質的な大転換があったりして、それはそれで脳内革命というか机上革命という内的激動があったりするのですが、いかんせん人間とは忘れる生物であり、あの時の変化がいつあったのかを遡及できなくなったりします。
また、プログラムとしては、秒単位までは言わなくても日単位でいつの時点で思いついたものかという遡及がしたくなります。日単位により、自分のプログラミングの変化の履歴の時間感覚が身につき、意外と時間感覚がプログラミング・スキルにとって重要だったりします(あまり、経験という肉感的言葉は重視はするものの強調しすぎたくない気持ちがあります)。
どちらかというと人間が意味(Sinn)として理解できる質レベルでの記録が便宜にかなうと思ったので、日記形式となりえるQiitaを選択しました。日本在住であれば、このサイトが一番ではないかとも思いました。
WordleをPythonに解かせる
## Wordleとは
URL:https://www.powerlanguage.co.uk/wordle/Wordleは2021年末に公開された,巷で話題の英単語推測ゲームです.お題となる5文字の英単語が存在し,それを合計6回の試行で特定します.
回答者は一度英単語を入力すると,その単語とお題の単語のどの文字が一致しているかを知ることができ,文字も場所も一致している場合は緑,文字は合っているが場所が一致していない場合は黄,文字も場所もあっていない場合は黒で表示されます.
1日1題出題だけされ,なかなか楽しいゲームなのですが,やっぱりコンピュータにも解かせてみたいですよね.ということでWordleをPythonに解かせてみました.
## 5文字の英単語リストを取得する
まず,Wordleのお題になる条件である”5文字の英単語”のリストを作成する必要があります.
Streamlitで作ったWebアプリをコンテナ化してデプロイ(Windows10、Python3.9、Azure Container Registry)
# はじめに
最寄りのバス停にバスがあと何分で着くかだけを表示するもの作ったんですけど、最寄りのバス停にバスがあと何分で着くかだけを表示するものなんだけど、1番よく使う#熊本 #MaaS #M5Stack #GTFS
カーネルリッジ回帰をnumpyで実装
# カーネルリッジ回帰をnumpyのみで実装
##必要ライブラリのインポート
“`python:kernelRidgePredict.py
import numpy as np
np.random.seed(1)
import matplotlib.pyplot as plt
from itertools import product
“`##サンプルデータの生成
sin関数+1次関数に、正規分布のノイズを加える。“`python:kernelRidgePredict.py
# データセット
def function(x):
y = 0.2*np.sin(x) + 0.1*x
return y# データを生成
n_sample = 40
X = np.random.uniform(-2*np.pi, 2*np.pi, n_sample)
Y = function(X) + np.random.normal(loc=0, scale=0.05, size=n_sample)# 推定したいXの値
X_pred = np.linspace(-2*np.
Pythonで理解する計数抜取検査
#0. はじめに
抜取検査の統計的な意味を理解する上で確率分布の理解は欠かせません。品質管理の本にのってる計数値に関する確率分布を見ることで統計的な意味の理解はできますが、身近な検査事例について自分で確率分布を書きアウトプットしながら理解することはより効果的です。ただ、手書きで確率分布を描くことは大変ですしエクセルであっても少し面倒です。
Pythonの統計関数モジュールscipy.statsは簡単に確率分布を描画できるため、グラフをかく煩わしさがなく効率的に検査の意味を理解できます。この記事では、Python統計関数モジュールscipy.statsを使ったわかりやすい計数抜取検査の解説を目指します。#1. 抜取検査と二項分布
抜取検査は、保証すべき単位(母集団)から一定数のサンプル(標本)だけを抜き取り検査することです。検査結果に対してある判断基準で合格・不合格を決めるわけですが、全数検査ではないため同じ品質レベルであっても、サンプルによって合格になったり不合格になったりします。
統計を使えば、ある不良率の時にどのくらいの確率で合格になるのか、どれくらいのサンプル数が適切なのか
streamlit_timelineを使って、streamlitで年表を作ってみた
# はじめに
Pythonの簡易Webアプリ作成ツールのstreamlitに、Timeline.jsと呼ばれる年表を作るJavaScriptのライブラリを組み込んだ、streamlit-timelineというライブラリがあります。
https://timeline.knightlab.com/
https://pypi.org/project/streamlit-timeline/
このTimelineの使い方を簡単に説明します。
# インストール
streamlitをまだインストールしていない場合“`bash
pip install streamlit
“`steamlit_timlineをインストール
“`bash
pip install streamlit_timeline
“`# タイムラインの作り方
“`python# Streamlit Timeline Component Example
import streamlit as st
from streamlit_timeline import timeline# use fu
PyMC3用の環境構築
# はじめに
PyMC2系を利用するための環境は特に苦労なく構築できるのですが、PyMC3系の環境はすんなりいかなかったので備忘録的に残しておきます。# 環境
| 項目名 | バージョン |
| — | — |
| Linux ディストリビューション | Ubuntu 20.04.3 LTS |
| Python | 3.9.7 |
| PyMC3 | 3.11.4 |Python は pyenv で管理されていることを前提とします。
# 構築手順
## Python のインストール
theano からの要請で、共有ライブラリ libpythonX.Y.a (X.Y は Python のバージョン) が位置独立コードでなければならないため、コンパイルオプション **-fPIC** を指定してビルドします。“`bash
CFLAGS=”-fPIC” pyenv install 3.9.7
“`pip を最新版にアップグレードしておきます。
“`bash
pip install –upgrade pip
“`## PyMC3 のインストール
“
Windows10でpythonを用いた仮想環境の構築方法
## 仮想環境作成
“`
python -m venv [name]
“`
## 仮想環境立ち上げ
### ・Windows
“`
.[name]\Scripts\Activate
“`
### ・Linux
“`
source .[name]/bin/activate
“`
## 仮想環境から抜ける
“`
deactivate
“`
## 仮想環境を削除
### ・Windows
“`
rmdir /s [name]
“`
### ・Linux
“`
rm -s [name]
“`## ライブラリエクスポート
“`
pip freeze > requirements.txt
“`## ライブラリインポート
“`
pip install -r requirements.txt
“`
## 動画で確認する
PythonでSeleniumするときに書いておいたほうがいいコード
メモとして残しておきます。
“`scraping.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Serviceoptions = webdriver.ChromeOptions()
options.add_argument(“start-maximized”) # 画面表示を最大にする
options.add_experimental_option(“excludeSwitches”, [“enable-logging”]) # よくわからん長文をコンソールに表示させない
s = Service(ChromeDriverManager().install()) # これでwebドライバーのパスの指定不要、ブラウザのバージョンに合わせなくて済む
driver =
twitterAPIの取得に苦労したので情報共有します
#twitterAPIの取得方法(”Elevated”ライセンスまで)
1. twitterAPIには”essencial”と”Elevated”のライセンスがある。
2. “essencial”ライセンスはパーミッションが”Read”のみで情報の取得しかできない。
3. 一方、”Elevated”ライセンスはパーミッションが”Read&Write”でツイートやいいねができる。
4. APIの利用を開始すると最初は”essencial”ライセンスとなる。その際、英語の質問は特にされない。
4. “Elevated”ライセンスを取得するためにはディベロッパーポータルから申し込む必要がある。その際、英語の質問をされる。英語の質問で気を付けたいことは下記2点
・自動でいいねやリツイートをするとは言わないこと。
・ツイッターの内容やコンテンツを外部で表示するといわないこと。
・いかなる政府機関や公共団体にもAPIのデータは利用されないこと
自動でいいねを押すことは禁止されています。検索で出てくる情報と今の登録方法には少し違いがあるようです。
tweepyは”Elevated”ライセン
【Anaconda3】仮想環境で起動したAtomからコードを直接実行する(RDKit)
以前、RDkitという化学系ライブラリを使用するためにPython3.7系の仮想環境を作成しました(RDkitがPython3.8以上に対応していないため)。このような仮想環境下でAtomエディタから直接スクリプトを実行する方法を調べたのでメモしておきます。
“`:利用環境
Python: 3.8.8 (Anaconda3で導入)
(RDkit用の仮想環境のPythonは 3.7.11)
OS: Windows 10
エディタ: Atom (“script” パッケージ導入済み)
“`※ここでは既にRDkit用の仮想環境が準備できているものとします。仮想環境を構築する方法については過去のエントリを参考にして下さい。
https://qiita.com/h-nabata/items/c1d16471bda6735a5d8a
# 手順
### ① Anacondaパッケージに同梱されている「Anaconda Prompt」を起動
### ② Anaconda Promptで`activate [仮想環境名]`を実行して仮想環境を起動>環境一覧を取得したいときは`cond
PythonでSeleniumを使ってみる
##前書き
初投稿記事です。
Seleniumというものがあることを知り、使ってみろと言われたため
備忘録的に残しおておこうと思います。##ゴール
・PythonとSeleniumのライブラリを使って自動でWebサイトを操作
・必要な情報をログとして保存##準備物について
###使用するもの
・Python v3.7.7
・Selenium v4.0.0
・ChromeDriver 96.0.4664.45 (多分)PythonもSeleniumもChromeDriverも触ったことがなかったので、それぞれの概要を以下にまとめます。
###〇Pythonとは
Pythonとはプログラム言語の事。
拡張性が高く、機械言語などで評価されている。###〇Seleniumとは
Selenium(セレニウム)とは、ブラウザの操作を自動化するための物。
→このURLのこのボタン押して~みたいなことを自動で行ってくれる。###〇ChromeDriverとは
プログラムとChrome(ブラウザ)をつなげる役割を果たすドライバー。
様々なドライバーがあるが、今回はc
Python でウィンドウの閉じるボタンを無効化する
# 概要
Minecraftで遊んでいるとき、間違えてウィンドウの閉じるボタンを押してしまうと何の確認もなくゲームが終了してしまいます。これを防止するために閉じるボタンを無効化します。
# 前提“`
Microsoft Windows 10 Home
Python 3.7.7
pip 21.3.1
“`## pywin32 のインストール
“`
pip install pywin32
“`# プログラム
“`python:disableXbutton.py
import win32con
import win32guidef showXbutton(title: str) -> None:
hwnd = win32gui.FindWindow(None, title)
if not hwnd:
print(“couldn’t find window. title:”, title)
return
print(win32gui.GetWindowText(hwnd))win32gui.Ge
デッキ画像から駒名称を抜き出す【特徴点マッチング編】
# はじめに
こんにちは。逆転オセロニアのYouTubeチャンネル「まこちゃんねる」の中の人です。
本稿では、以前にも挑戦した[デッキ画像から駒名称を抜き出すこと](https://qiita.com/macochan/items/f74c87e7c708dd6e7ed5)を目標にします。
今回は**特徴点マッチング**を使った方法を利用してみます。# モチベーション
前回は**[テンプレートマッチングを使った方法](https://qiita.com/macochan/items/f74c87e7c708dd6e7ed5)**を利用することで、テンプレート画像から駒名称を取得しました。が、この方法は**テンプレート画像を用意する手間があるのが問題点**でした。
そこで、今回はテンプレート画像を作らなくても良い手法で、かつ汎用性の高く、画像から駒名称を抜きだしたいと思ったのが始まりです。
logging 練習# logging 練習
“`
from logging import ERROR, Formatter, Handler, getLogger, FileHandler, Formatter, DEBUG# loggerを作る
logger = getLogger(__name__)# 手下のhandlerを作る(手下:handlerには属性があり、filehandler:ファイル作るやつ、とstreamhandler:コンソールに出すやつがいる)
handler = FileHandler(‘log.txt’,encoding=’utf-8′)# loggerに手下を割り当てる
logger.addHandler(handler)# 手下の報告書フォーマット決める
# reportForm = Formatter(‘[%(levelname)s] %(asctime)s – %(message)s (%(filename)s)’)
reportForm = Formatter(‘%(levelname)s,%(asctime)s,%(message)s,%(fi
EclipseでPythonのpip installを使う
EclipseでPython pip installのやりかた
**本記事は、Pythonをinstallしていること前提としています。**
**目次**
1.get-pipをインストール
2.実行get-pipをインストールする
https://bootstrap.pypa.io/get-pip.py
**1.リンクを右クリック**
**2.名前を付けてリンク先を保存**
**3.Eclipse.exeと同じ階層にget-pip.pyを配置**実行
1.Eclipseの設定
2.フィルター入力 →「インタープリンター」
3.Pythonインタープリター
4.pipで管理
5.install <インストールするもの>
二つのDataFrameを比較して代入を行う方法(pd.mergeの使い方)
毎回書き方を忘れるので、以下、備忘録です。
DataFrame① “`df“`
| |time_index |data |
|—|—|—|
|0 |2001 |10 |
|1 |2002 |20 |
|2 |2003 |30 |
|3 |2004 |40 |
|
|3 |2011|40 |
|
|19|2020 |50 |DataFrame ② “`dx“`
| |time_index |data |
|—|—|—|
|0 |2010|1 |
|1 |2011|20|
|2 |2012|3 |
|3 |2013|4 |
|
|
|10|2020 |4|このDataFrame①とDataFrame②をmergeする。
“`python
df = pd.merge(df, dx, on=’time_index’, how=’left’)
“`とすることで、
| |time_index |data_x | data_y |
|—|—|—|—|
|0 |2001
ネットワークの中心性(次数中心性と近接中心性)
**ネットワーク**(**グラフ**)とは,以下のように**頂点(ノード)**が**辺(エッジ,リンク)**で結ばれたものです.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/795ddff6-5494-e7d3-ddf1-a3ed165dd1a8.png)
このようなネットワークにおいて**中心的なノード**を見つけたいことがあります.人のつながりをネットワークとして捉えるならば,中心的な人は,その文脈に依存して,友人が多い人,うわさを広めてしまう人,感染症を拡げてしまう人,他人に影響力がある人,…と解釈することができます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/c061db21-912c-cba5-44ba-4e46b2bef0c6.png)ネットワークの中心的なノードを見つける時に,**中心性**という指標が使えます.中心性指標にもいくつか