【Python】配列同士の AND や OR, NOT を取る方法
Boolの配列同士でAND, OR, NOTを取る方法。
listとnumpyで方法が違うので覚え書き (こうゆう操作感の違いは何とかしてほしい...)
配列からTrueの部分だけ抽出するときなんかに便利。
oregengo.hatenablog.com
list の場合
戻り値はlist
a = [True, True, False, False] b = [True, False, True, False] # AND c = a and b > [True, False, True, False] # OR c = a or b > [True, True, False, False] # Not c = not a > False # 反転にはならない。配列全体が評価されてしまうので注意
numpy の場合
戻り値はndarray. 引数はlistも可
a = [True, True, False, False] b = [True, False, True, False] # AND c = np.logical_and(a, b) > array([ True, False, False, False]) # OR c = np.logical_or(a, b) > array([ True, True, True, False]) # Not c = np.logical_not(a) > array([False, False, True, True]) # ちゃんと反転できる
【Python】0次元のndarrayを1次元に変換
そもそも0次元が存在しているのが意味不明なんだけど、
a = np.array(0)
で作成したndarrayはshape=0のゼロ次元になってしまう。
これでは例えばconcatenateでほかのndarrayと結合しようとすると
b = np.zeros(10) c = np.concatenate((a, b)) ValueError: zero-dimensional arrays cannot be concatenated
と出てエラーになる。
その時は
b = np.atleast_1d(b)
として1次元に変換してあげると結合可能になる。
【Python】CSV, Excelなどのデータ読み込み
いろいろなモジュールがあるので一度まとめ。
numpy.genfromtxt
メリット
- numpyのメソッドなので他のモジュールをインポートする必要なし
- 読み込んだデータ(戻り値)がndarrayなので使いやすい
- csvモジュールみたいに一行ずつの読み込みではなく一度に処理可能.。
- 読む込む行、列の指定も可能(読み込む行はnumpy1.16.0以降)
- 書き出しのためのsavetxt()もあり便利。
- savetxtで追記するにはファイルを追記モードで開いてハンドルをsavetxtへ渡すことで可能。
with open("text.txt", 'a') as f: np.savetxt(f, data)
デメリット
- エクセル等のファイルには非対応
使い方
np.genfromtxt(data_path, delimiter="\t", skip_header=5, skip_footer=3, max_rows=5) # delimiter : "," , "\t" など # skip_header : エクセルで6行目から読み込ませたい場合は6 # skip_footer : 下から数えて何行分を読み込まないかを指定 # max_rows : 読む込む行数を指定,skip_footerと同時使用しないこと
xlrd
pandas
メリット
- データの加工や計算はメソッドがいくつか用意されていて便利
デメリット
- インポートするモジュールの容量が大きく、配布には不向き(未検証につき推測)
設定まとめ
Bluetooth設定
かなりハマる。。
qiita.com
www.trifields.jp
mononichi.com
導入と初期セットアップ
久々に使用したので覚え書き。
導入
- imgのダウンロード
Raspbian Stretch with desktop
Kernel version:4.14
Download Raspbian for Raspberry Pi
- SDカードのフォーマット
SD Memory Card Formatter
- imgファイルの書き込み
Etcher
初期設定
- Static IP
【Python】Python用Matlabエンジンのインストール
PythonからMatlabで作成したmファイル等を読み出したい場合に使用。
使用しているMatlabのバージョンによって使用可能なPythonのバージョンに制約があるので要注意。
Matlab2016a -> Python 3.4, 3.3, 2.7
普段はPython3.7を使用してるためvirtualenvを使用してpython3.4をセットアップ。
以下は仮想環境でPython3.4が準備できた後のmatlabエンジンのインストール方法
- 環境変数でPython3.4が3.7よりも先に呼ばれるようにする
- コマンドプロンプトを管理者権限で起動
- matlabエンジンのインストール用ファイル位置に移動
cd C:\Program Files\MATLAB\R2016a\extern\engines\python # matlabルートファイル下
- python3.4でインストール.通常はC:\Python34\Lib下のsite-packageにインストールされるようだが
viatualenvを使用していてフォルダが異なるのでそのフォルダを指定
python setup install --prefix="C:\*****\Python_workspace\py34" # Lib\site-package\matlabが作成されるのでLibフォルダが存在する階層を指定