NumPy:【ndarray】を作成する3つの方法


サマリ

  • np.array
    • 手作業で要素1つずつ指定して作成
    • 自由度は高いがサイズが大きいものは難しい
  • np.arange+np.reshape
    • 順列を作成してから形状を変換
    • 作ったndarrayの形状変換するところがポイント
  • np.random
    • 引数に作成するndarray(NumPy配列)の形状を指定
    • 直観的に作成できる

前提

サンプルコード

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)のようにサイズを指定する


Posted by futa