Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

numpy

ビット操作

pythonのビット操作について ビットand, or, xor, not & :ビットand | :ビットor ^ :ビットxor ~ :ビットnot(反転) print(bin(0b0101 & 0b1100)) # 0b100 print(5 & 12) # 4 print(bin(0b0101 | 0b1100)) # 0b1101 print(5 | 12) # 13 print(bin(0b0101 ^ 0b…

NumPyの使い方(19) 数え上げ

NumPyの数え上げ(要素のカウント)について。 0,1のみのデータから1や0の個数を数える方法 import numpy as np a1 = np.array([0, 1, 1, 0, 1, 0, 0, 0]) # 1の個数をカウントする例 print(np.count_nonzero(a1)) # 3 print(a1.sum()) # 3 print(len(np.where…

NumPyの使い方(18) 次元操作

NumPyの次元操作について 次元の増減 保持 削減 増加 reshape ○ ○ ○ resize ○ ○ ○ flatten ○ × rabel ○ × any, all × ○ × sort ○ △ × axis略で1d スライス ○ × × インデックス × ○ × ファンシーインデックス ○ ○ × take ○ △ × axis略で1d mean, sum × ○ × mi…

NumPyの使い方(17) 構造化配列

NumPyの構造化配列(structured array)について。 dtypeを自分で設定して、異なる型の変数を織り込める。 フィールド名で要素を参照できる。 dtype = [("x", int), ("y", float)] a1 = np.array([(1, 2), (3, 4), (5, 6)], dtype=dtype) print(a1) # [(1, 2.0…

NumPyの使い方(16) 行列matrix

NumPyのmatrixについて。 class 種類 次元 ndarray 配列 次元は自由 matrix 行列 2次元に固定 ndarrayでは行列の積を表すときにdot()を呼びだすが、 matrixでは「*」や「**」で行列の積などを表せる。 その他の使い方はndarrayと同様のようです。 import num…

NumPyの使い方(15) ブロードキャスト

NumPyのブロードキャストについて。 配列の次元、大きさ(要素数)などが異なっていても配列どうしやスカラーの演算ができる。 ブロードキャストができるのは、2つの配列のshapeを最終軸から順に比較していき、同じ大きさか、一方が1であるかチェック。 1つ…

NumPyの使い方(14) 繰り返し

NumPyの繰り返しrepeat()、tile()について。 np.repeat() 配列の要素を繰り返す。 axisを省略すると1次元にflattenされる。 import numpy as np a1 = np.arange(4) print(a1.repeat(2)) # [0 0 1 1 2 2 3 3] print(a1.repeat([3, 2, 1, 0])) # [0 0 0 1 1 2]…

Numpyの使い方(13) 結合・分割

Numpyの配列の結合・分割について。 np.concatenate() 2個以上の配列を軸指定して結合する。 軸指定オプションのaxisはデフォルトが0 マスクは保存されない。(マスクについては別の記事で) import numpy as np a1 = np.array([[1, 2, 3], [4, 5, 6]]) a2 …

NumPyの使い方(12) 乱数、random

乱数を発生させるライブラリは主に2つ。randomライブラリとNumPyのrandom 2つのライブラリの一番の違いは乱数の発生個数。 乱数の発生個数 randomモジュール :乱数1個 numpyは配列の形をsize=~の形のキーワード引数で乱数の個数を指定できる。 size 省略…

NumPyの使い方(11) 行列計算

NumPyの行列計算について 内積 内積はnp.dot()関数を使うかarray.dot()メソッドを使うか。 内積は順序によって結果が異なる。 import numpy as np a1 = np.ones([2, 2], dtype=int) a2 = np.arange(1, 5).reshape(2, 2) print(a1) # [[1 1] # [1 1]] print(a…

NumPyの使い方(10) 集合関数

NumPyの集合関数について。 python標準のset型も参照。 1次元配列を対象とした集合関数 unique(x) 重複を除外し、ソートした配列 in1d(x,y) xの各要素がyに存在するか intersect1d(x, ) 共通部分。積集合 union1d(x, y) 和集合 setdiff1d(x, y) 差集合 setxo…

NumPyの使い方(9) 並べ替えsortなど

NumPyのsortについて。 sort()メソッド 内部で配列をソート。返り値はNone np.sort()関数 ソート済み配列を返す。元の配列は保存。 # coding: utf-8 import numpy as np np.random.seed(1) a1 = np.random.randint(0, 100, 10) print(a1) # [37 12 72 9 75 5…

NumPyの使い方(8) 真偽値

NumPyの真偽値について。 ・TrueとFalse python標準のTrue, Falseでは False 数値のゼロ、空文字列、空配列、False True 他すべて TrueがFalse以外ということは、 負の値、NaN、infもTrueとなる。・条件がTrueとなる要素の確認 import numpy as np a1 = np.a…

NumPyの使い方(7) 統計関数、最大・最小

NumPyの統計関数の使い方 ndarray配列全体、あるいは特定の軸についての統計処理をする。 sumやmeanなどの集計処理は次元削減になる。 axis=0 縦方向にreduce axis=1 横方向にredece sum 和。 長さ0の配列では0を返す。 mean 平均。長さ0の配列ではNaNを返す…

NumPyの使い方(6) 条件制御

NumPyの条件制御について。 if~elseで条件分岐をするとき a = 5 if a >= 0: b = 1 else: b = -1 と書けますが、これを3項演算子を使い以下のようにも書けます。 b = 1 if a >= 0 else -1 似たような動作を組み込みのリスト型で行うとき、 例えば、Trueなら…

NumPyの使い方(5) ベクトル演算とユニバーサル関数

ベクトル演算とユニバーサル関数について。 ベクトル演算 ndarrayと数値(スカラー)の計算は全要素対象で、forループを使わない。 ndarrayどうしの演算は対応する位置の要素どうしで計算。 [注意]ndarray * ndarrayは内積や外積にはならない。 import numpy a…

NumPyの使い方(4) 形状変換と転置

NumPyの形状変換と転置について。 reshape()、resize() タプルでshapeを指定して形状を変換する。 変換前後で全要素数が一致しないときはValueError -1を指定した軸はNumPyが自動で判断。 もとの配列を参照を得るので、値変更は元の配列に及ぶ。 np.resize()…

NumPyの使い方(3) インデックス、スライス

NumPyのインデックス、スライスについて。 1次元配列のインデックス、スライス 値の参照:python組み込みのlistと同様 値の代入:まとめて同じ値が代入(ブロードキャスト) import numpy as np # 値の参照、代入 a1 = np.arange(1, 10) print(a1) # [1 2 3…

NumPyの使い方(2) データ型

NumPyのデータ型 dtype 略号 種類 int32 i, i4 符号あり整数 32bit unit32 I, u4 符号なし整数 32bit float32 f, f4 小数 64bit complex64 F, c8 複素数 128bit bool 真偽値 True, False object O pythonオブジェクト string バイト文字列型 固定長。5文字な…

NumPyの使い方(1) 配列の生成

NumPyの使い方について。 NumPyとは ・NumPy: numerical pythonの略。科学技術計算の基盤となるパッケージ ・多次元配列オブジェクト ndaaryay(N-dimensional array) ・高速演算 ・ファイルの読み書き ・線形代数、フーリエ変換、乱数 ・C、C++、FORTRANのコ…