Skip to main content

NumPy メモ

NumPy 配列 ndarray

ループしなくても配列処理ができる

シーケンスから

py
import numpy as np

my_arr = np.arange(10) # arrange ではない a-range
# => 0, 1, 2, .. 9
my_arr2 = my_arr * 2
# => 0, 2, 4, .. 18

N 次元

初期化の例

py
data = np.array([1, 2, 3])
data = np.array([[1, 2, 3], [4, 5, 6]])

情報取得系

  • data.ndim : 何次元かを取得
  • data.shape : 要素数を取得 (2, 4) など
  • data.dtype : 型名

同じ値の初期化

py
data = np.zeros((2, 3))
data = np.ones((2, 3))

型変換

py
data = data.astype(np.float64)
data = data.astype(data2.dtype)

slice

py
data[2, 3]    # 2行目3列目を取得
data[:, 0] # 0列目だけ取得
data[1:, 1:] # 1列目以降、1行目以降を取得

スライス代入もできる

ブールインデックス参照

py
data = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])
cols = np.array([True, False, True])
data[cols]
# => [[11, 12, 13], [31, 32, 33]]
py
data = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])

ファンシーインデックス参照

py
data[[2, 0]]
# => [[31, 32, 33], [11, 12, 13]]

転置

py
data.T
data.swapaxes(0, 1)

内積

py
np.dot(data1, data2)
data1 @ data2

random

py
samples = np.random.standard_normal(size=(4, 4))

集合関数

py
data.sum()
data.sum(axis=0)
data.mean(axis=0)
data.cumsum(axis=0)
py
data = np.array([1, 2, 3])
data.sum() # => 6
data.mean() # => 2
data.cumsum() # => [1, 3, 6]

件数カウント

たとえば偶数の件数カウント

py
(data % 2 == 0).sum()

以下広告