ichigoryume programming blog

プログラミングに関する備忘録。主にHTML5, C#, Swiftなど。

numpy.ndarray

numpyの配列の使い方備忘録

import

import numpy as np

生成

array

 a1 = np.array([1,0, 2.0, 3.0])
 a2 = np.array([2,0, 4.0, 6.0])

arange

>>> np.arange(0, 1, 0.1)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

演算

四則演算

 a1 + a2 # [3.0, 6.0, 9.0]
 a1 - a2 # [-1.0, -2.0, -3.0]
 a1 * a2 # [2.0, 8.0, 18.0]  行列の積ではなく、要素ごとの積な点に注意
 a1 / a2 # [0.5, 0.5, 0.5]

行列の積

>>> a1 = np.array([[1, 2], [3, 4]])
>>> a2 = np.array([[1, 2], [3, 4]])
>>> np.dot(a1, a2)
array([[ 7, 10],
       [15, 22]])

要素の和

>>> a1 = np.array([[1, 2], [3, 4]])
>>> np.sum(a1)
10

ブロードキャスト

>>> np.array([[1, 2], [3, 4]]) * 10
array([[10, 20],
       [30, 40]])

>>> np.array([[1, 2], [3, 4]]) * np.array([10, 20])
array([[10, 40],
       [30, 80]])

判定

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a > 3
array([[False, False],
       [False,  True],
       [ True,  True]])

Properties

dtype

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a.dtype
dtype('int64')

shape

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a.shape
(3, 2)
>>> a.shape[0]
3
>>> a.shape[1]
2

ndim (次元数の取得)

>>> a
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> a.ndim
2

要素の取得

イテレーション

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> for row in a:
...     print(row)
... 
[1 2]
[3 4]
[5 6]

配列によるindex指定

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a[np.array([1, 2])]
array([[3, 4],
       [5, 6]])

範囲指定

>>> a = np.array([1,2,3,4,5,6])
>>> a[2:3]
array([3])
>>> a[2:5]
array([3, 4, 5])

最も値の大きい要素のインデックスを取得

>>> a = np.array([[8,2,3],[4,5,6]])
>>> a
array([[8, 2, 3],
       [4, 5, 6]])
>>> np.argmax(a, axis=0) # 列ごとに(行方向)
array([0, 1, 1])
>>> np.argmax(a, axis=1) # 行ごとに(列方向)
array([0, 2])
>>> np.argmax(a) # 1次元配列とみなして検索
0

条件にマッチする要素数の取得

>>> a
array([1, 2, 3, 4, 5, 6])
>>> a > 3
array([False, False, False,  True,  True,  True])
>>> np.sum(a > 3)
3
>>> np.sum(a > 4)
2

変換

Shapeの変換

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> a = a.flatten()
>>> a
array([1, 2, 3, 4, 5, 6])
>>> a = a.reshape(2, 3)
>>> a
array([[1, 2, 3],
       [4, 5, 6]])

型変換

>>> y
array([[False, False],
       [False,  True],
       [ True,  True]])
>>> y.astype(np.int)
array([[0, 0],
       [0, 1],
       [1, 1]])