NumPy:【ndarray】を作成する3つの方法
サマリ
- np.array
- 手作業で要素1つずつ指定して作成
- 自由度は高いがサイズが大きいものは難しい
- np.arange+np.reshape
- 順列を作成してから形状を変換
- 作ったndarrayの形状変換するところがポイント
- np.random
- 引数に作成するndarray(NumPy配列)の形状を指定
- 直観的に作成できる
前提
- np.arange
- np.reshape
- np.random.randint
- np.random.randn
サンプルコード
np.array(手作業)
1次元
import numpy as np
a = np.array([1,2])
print(a)
print(a.shape)
[1 2] (2,)
- 1次元ndarray(NumPy配列)を作成
- 要素数は2
2次元、3次元
b = np.array([[1,2], [3,4]])
c = np.array([[[1,2], [3,4]], [[5,6], [7,8]]])
print(b)
print(b.shape)
print(c)
print(c.shape)
[[1 2] [3 4]] (2, 2) [[[1 2] [3 4]] [[5 6] [7 8]]] (2, 2, 2)
- b
- 2次元ndarryaを作成
- 要素数は2×2=4
- c
- 3次元ndarryaを作成
- 要素数は2x2x2=8
- 手作業は大変、限界がありそう
np.arange+np.reshape
2次元
import numpy as np
a = np.arange(10).reshape(2,5)
print(a)
print(a.shape)
[[0 1 2 3 4] [5 6 7 8 9]] (2, 5)
- np.arange(10)
- 1次元ndarray(NumPy配列)を作成
- 要素数は10
- np.reshape(2,5)
- 10=2×5に分けて2次元ndarrayに変換
- 1つにまとめて記載している
3次元
b = np.arange(24).reshape(2,4,3)
print(b)
print(b.shape)
[[[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] [[12 13 14] [15 16 17] [18 19 20] [21 22 23]]] (2, 4, 3)
- np.arange(24)
- 1次元ndarray(NumPy配列)を作成
- 要素数は24
- np.reshape(2,4,3)
- 24=2x4x3に分けて3次元ndarrayに変換
- 1つにまとめて記載している
np.random(乱数生成)
import numpy as np
a = np.random.randint(1, 10, (2,5))
b = np.random.randn(2,3)
print(a)
print(a.shape)
print(b)
print(b.shape)
[[5 5 3 6 2] [9 1 4 3 7]] (2, 5) [[1.79870514 1.53957122 0.52645216] [1.31010044 0.99383704 1.82259428]] (2, 3)
- メソッド呼び出し時の引数に指定
- 作成するndarray(NumPy配列)を(2,5)や(2,3)のようにサイズを指定する
