NumPy

NumPy Quickstart チュートリアルに取り組む (1-2) 基本 配列の作成

配列の作成

配列を作成する方法はいくつかある。例えば、配列関数を使って通常のPythonのリストやタプルから配列を作成できる。(型は、配列内の要素の型から推測される)

import numpy as np
a = np.array([2, 3, 4])
print(a)  # [ 2 3 4 ]
print(a.dtype)  # int32

b = np.array([1.2, 3.5, 5.1])
print(b.dtype)  # float64

#  良くやる間違い
#  a = np.array(1,2,3,4) 

# 配列は、配列の配列を2次元配列、3次元配列に変換できる
c = np.array([(1.5, 2, 3), (4, 5, 6)])
'''
[[ 1.5 2.  3.  ]
 [ 4.  5.  6.  ]]
'''
print(c)

# 配列の型は、作成時に明示的に指定できる
d = np.array([[ 1, 2 ], [3, 4]], dtype=complex)
'''
[[ 1.+0.j 2.+0.j ]
 [ 3.+0.j 4.+0.j ]]
'''
print(d)

配列の作成する関数

配列の要素は元々不明であっても、そのサイズは分かっている事が多い。NumPyは、初期のプレースホルダ内容を持つ配列を作成するためのいくつかの関数を提供している。

関数 zeros は「0」で埋められた配列を作成,関数 ones は「1」で埋められた配列を作成する。関数 empty は初期内容がランダムでメモリの状態に依存する配列を作成する。デフォルトでは作成される配列のdtypeはfloat64。

import numpy as np

print(np.zeros((3, 4)))
'''
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
'''

print(np.ones((2, 3, 4), dtype=np.int16))
'''
[[[ 1 1 1 1 ]
  [ 1 1 1 1 ]
  [ 1 1 1 1 ]]

 [[ 1 1 1 1 ]
  [ 1 1 1 1 ]
  [ 1 1 1 1 ]]]
'''

print(np.empty((2, 3)))
'''
[[1.39069238e-309 1.39069238e-309 1.39069238e-309]
 [1.39069238e-309 1.39069238e-309 1.39069238e-309]]
'''

NumPyはPythonの組み込みレンジに似たarange関数を提供しており配列を返す。

arangeを浮動小数点引数で使用する場合、浮動小数点精度が有限で、一般的には得られる要素数を予測できなため、通常はステップではなく、欲しい要素数を引数として受け取る関数linspaceを使う。

import numpy as np

print(np.arange(10, 30, 5))  # [10 15 20 25]
print(np.arange(0, 2, 0.3))  # [0.  0.3 0.6 0.9 1.2 1.5 1.8]


from numpy import pi

np.linspace(0, 2, 9)
x = np.linspace(0, 2*pi, 100)
f = np.sin(x)
print(f)  # [ 0.00000000e+00  6.34239197e-02  ...  -2.44929360e-16]