kaeken(嘉永島健司)のTech探究ブログ

主に情報科学/情報技術全般に関する知見をポストします。(最近は、特にData Science、機械学習、深層学習、統計学、Python、数学、ビッグデータ)

まずはNumPy配列操作

『ゼロから作るDeep Learning』でディープラーニングに必要な行列処理をPythonでやるための準備。まずは、NumPyで配列操作を学ぶ。

>>> import numpy as np
>>> x = np.array([1.0, 2.0, 3.0])
>>> x
array([ 1.,  2.,  3.])
>>> type(x)
<class 'numpy.ndarray'>
>>> y = np.array([2.0, 4.0, 6.0])
>>> x+y
array([ 3.,  6.,  9.])
>>> x*y
array([  2.,   8.,  18.])
>>> x/y
array([ 0.5,  0.5,  0.5])


>>> x
array([ 1.,  2.,  3.])
>>> x/2 #ブロードキャスト機能
array([ 0.5,  1. ,  1.5])

# N次元配列
>>> A = np.array([[1,2], [3,4]])
>>> A
array([[1, 2],
       [3, 4]])
>>> A.shape
(2, 2)
>>> A.dtype
dtype('int64')

>>> A
array([[1, 2],
       [3, 4]])
>>> B = np.array([[3,0],[0,6]])
>>> B
array([[3, 0],
       [0, 6]])
>>> A+B
array([[ 4,  2],
       [ 3, 10]])
>>> A*B
array([[ 3,  0],
       [ 0, 24]])


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

>>> X = np.array([[51,55],[14,19],[0,4]])
>>> X
array([[51, 55],
       [14, 19],
       [ 0,  4]])
>>> X[0]
array([51, 55])
>>> X[0][1]
55
>>> for row in X:
...   print(row*2)
...
[102 110]
[28 38]
[0 8]

>>> x = X.flatten()
>>> x
array([51, 55, 14, 19,  0,  4])
>>> x[np.array([0,2,4])]
array([51, 14,  0])
>>> x > 15
array([ True,  True, False,  True, False, False], dtype=bool)
>>> x[x>15]
array([51, 55, 19])
# この不等号が使える文法は特徴的


printとかarrayとか もっと短くしたいが あまり言語文法を弄っても仕方がないので、 甘受しよう。