【Python】 array(numpy.ndarray)型の操作いろいろ
Python の信号処理では、array(numpy.ndarray)型の配列を色々いじくりまわして難しい計算を行なっていくので、基本的な操作を知っておかないと不便です。このページは array 型配列に対する操作を羅列しくだけのページで,具体的には次のようなことを紹介しています。
- numpy.ndarray の属性・メソッド
- その他の便利な操作
- よく使う(かもしれない) SciPy の関数
随時追加していくと思います。(多分)
色々抜けていると思うので、これが便利、などありましたら教えてください。
array型の操作
numpy.ndarray の属性・メソッドは全てここでみれます。下では信号処理で(個人的に)よく使うものをピックアップしています。# -*- coding: utf-8 -*- from scipy import rand ar = rand(100, 200) # (100 * 200) の配列 # ================ # 属性・メソッド # ================ # Tuple of array dimensions shape = ar.shape dim1 = shape[0] # 100 dim2 = shape[1] # 200 # 転置 ar_T = ar.T # 配列のコピー(deepcopy : ar と ar_copy は別の参照を持つ) ar_copy = ar.copy() # Reshape ar_reshape = ar.reshape(50, 400) # (50 * 400) の配列 # ================== # その他便利なやつ # ================== # n個ごと(n-1個飛ばし?) ar_step3 = ar[::3] # 2個飛ばし(第1次元) # Reverse ar_rv1 = ar[::-1] # 第1次元をリバース ar_rv2 = ar[:, ::-1] # 第2次元をリバース # ======================= # よく使う SciPy の関数 # ======================= from scipy import identity from scipy import dot, roll from scipy.linalg import inv I = identity(100) # (100 * 100) の単位行列 # 行列積 ar_ar = dot(ar, ar.T) # (100 * 200)(200 * 100) → (100 * 100) # 行列の回転(シフト) ar_roll_3 = roll(ar, 3, axis = 1) # 第2次元を3つシフト # 逆行列 I_inv = inv(I) # I_inv = I