【Numpy】配列の作成

Numpyで配列の作成する方法を列挙します。

  • np.array()

配列を作成するときの最もノーマルな方法です。

import numpy as np

# ノーマル
>>> np.array([1,2])    
array([1, 2])

# 2次元
>>> np.array([[1,2],[3,4],[5,6]])
array([[1, 2],
       [3, 4],
       [5, 6]])

# listからの変換
>>> a = [1,2,3]
>>> np.array(a)
array([1, 2,3])
  • np.arange()

整数の列を作るときはこれが便利です。
ただし0始まりに慣れないといけない。

# (0始まりで)3まで
>>> np.arange(3)        
array([0, 1, 2])

# (0始まりで)10まで。2つおきに。
>>> np.arange(0,10,2)   
array([0, 2, 4, 6, 8])

# 10から1ずつ減らして0まで(0が入らないのがなんとも言えない)
>>> np.arange(10,0,-1)  
array([10,  9,  8,  7,  6,  5,  4,  3,  2,  1])

# reshapeを使う。
>>> np.arange(10).reshape(2,5)
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
  • np.linspace()

 実数列を作りたいときはこれ。
 (開始[○から],終了[●まで],分割数[■分割])で覚えると便利です。
 ※ただし分割数は要素数-1になる事に注意。

# 0から10まで3分割
>>> np.linspace(0,10,3) 
array([  0.,   5.,  10.])

# 0から10まで2分割
>>> np.linspace(0,10,2) 
array([  0.,  10.])

# 0から10まで10分割(9ステップを10で割るから中途半端になる)
>>> np.linspace(0,10,10)
array([  0.        ,   1.11111111,   2.22222222,   3.33333333,
         4.44444444,   5.55555556,   6.66666667,   7.77777778,
         8.88888889,  10.        ])

# 0から10まで9分割
>>> np.linspace(0,10,11) 
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])
  • zeros, ones, eye

全部ゼロ、全部1、○次の正方行列(単位行列)を作るとき。

# 0を5要素
>>> np.zeros(5)
array([ 0.,  0.,  0.,  0.,  0.])

# 1を5要素
>>> np.ones(5)
array([ 1.,  1.,  1.,  1.,  1.])

# 5x5の単位行列
>>> np.eye(5)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  1.]])