Numpyで配列を作成するテクニック

Numpy

pythonで科学計算をする上でNumpyで配列を作成することが必須となります.本記事ではNumpyで配列を作成する方法をご紹介します.
はじめに,本記事で取り上げる配列作成のためのnumpy関数とそれによって作成できる配列の特徴を目次に記載しております.是非目次を参考にご自身にあった記事を読んで頂けばと思います.

 スポンサーリンク

スポンサーリンク

リストから作成[numpy.array]

numpy.array関数はリストやタプルから配列を作成します.

[IN]1次元の配列を作成します.

import numpy as np
a=np.array([1, 2, 3])#リストから配列を作成
print(a)

[OUT]

[1 2 3]

[IN]リストを2重にすると2次元配列が作成できます.

import numpy as np
a=np.array([[1, 2, 3],[4, 5, 6]])
print(a)

[OUT]

[[1 2 3]
 [4 5 6]]

2行3列の2次元配列が作成できました.

 numpy.arange関数は指定した数値の範囲と公差から配列を作成します.

nump.arannge関数の書式

numpy.arange(start,stop,step)
start:開始位置
stop:終了位置
step:公差
注意として終了位置に指定した値は配列に含まれません.

・numpy.arange関数に引数を1つ渡す

 numpy.arange関数で引数を1つ渡した場合は,この数値が終了位置となり,0を開始位置とし公差1の配列が作成されます.

[IN]

import numpy as np
a=np.arange(7)
print(a)

[OUT]

[0 1 2 3 4 5 6]

・numpy.arange関数に引数を2つ渡す

 numpy.arange関数に引数を2つ渡すとそれぞれ順番に開始位置と終了位置となり,公差1の配列が作成されます.これは範囲を指定した連番作成を作るのに便利です.

・5から13までの連番を作成してみます.

import numpy as np
a=np.arange(5, 14) #終了位置は配列に含まれません
print(a)

[OUT]

[ 5  6  7  8  9 10 11 12 13]

・numpy.arange関数に引数を3つ渡す
 numpy.arange関数に引数を3つ渡すとそれぞれ順番に開始位置,終了位置,公差を指定したの配列が作成されます.

[IN]

import numpy as np
a=np.arange(0, 1.2, 0.2) 
print(a)

[OUT]

[0.  0.2 0.4 0.6 0.8 1. ]

・数値を逆順で作成

 公差に負の値を指定すると,数値を逆順で作成することができます.開始位置は終了位置より大きくする必要があります.

9から1までを逆順に作成します.

[IN]
import numpy as np
a=np.arange(9, 0, -1) 
print(a)

[OUT]

[9 8 7 6 5 4 3 2 1]

指定の要素数で等差数列を作成[numpy.linspace]

 numpy.linspace関数は要素数を指定して等差数列を作成することができます.

numpy.linspace書式

numpy.linspace(start,stop,num)
start:開始位置
stop:終了位置
num:要素数(デフォルト50)
終了位置(stop)の値は作成される配列に含まれます.

11から20の範囲で要素数10で配列を作成します.

[IN]

import numpy as np
a=np.linspace(11, 20, 10) 
print(a)

[OUT]

[11. 12. 13. 14. 15. 16. 17. 18. 19. 20.]

初期配列を作成する

要素を全て0で埋める配列を作成[numpy.zeros]

 numpy.zeros関数を使うとがすべて要素が0の配列を作成できます.

numpy.zeros関数の書式

numpy.zeros(shape)
引数shapeは各次元の要素数を指定します.

・全ての要素が0の1次元配列

[IN]

import numpy as np
a=np.zeros(4) 
print(a)

[OUT]

[0. 0. 0. 0.]

・全ての要素が0の2次元配列

import numpy as np
a=np.zeros((2, 4)) 
print(a)

[OUT]

[[0. 0. 0. 0.]
 [0. 0. 0. 0.]]

・全ての要素が0の3次元配列

import numpy as np
a=np.zeros((2, 2 , 4)) 
print(a)

[OUT]

[[[0. 0. 0. 0.]
  [0. 0. 0. 0.]]

 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]]]

要素を全て1で埋める配列を作成[numpy.ones]

 numpy.ones関数を使うとがすべて要素が1の配列を作成できます.

numpy.ones関数の書式

umpy.ones(shape)
引数shapeは各次元の要素数を指定します.

 全ての要素が1の1次元と2次元の配列を作成します.

[IN]

import numpy as np
a=np.ones((4))     #1次元配列
b=np.ones((2, 3)) #2次元配列
print("1次元配列")
print( a )
print("2次元配列")
print( b )

[OUT]

1次元配列
[1. 1. 1. 1.]
2次元配列
[[1. 1. 1.]
 [1. 1. 1.]]

要素が全て空の配列を作成[numpy.empty]

 numpy.empty関数を使うとがすべて要素を空にした配列を作成できます.

numpy.empty関数の書式

numpy.empty(shape)
引数shapeは各次元の要素数を指定します.

[IN]

import numpy as np
a=np.empty((4))     #1次元配列
b=np.empty((2, 4)) #2次元配列
print("1次元配列")
print( a )
print("2次元配列")
print( b )

[OUT]

11次元配列
[1.26953870e-311 2.44777647e-307 0.00000000e+000 3.45845952e-323]
2次元配列
[[6.23042070e-307 1.78018403e-306 6.23057349e-307 2.11393051e-307]
 [1.89142822e-307 8.01097889e-307 8.45596650e-307 1.69121367e-306]]

メモリーにある値をランダムに割り振っています.

要素を指定した数値で埋めつくす配列[numpy.full]

numpy.full関数を使う事ですべての要素を指定した値で埋め尽くします.

numpy.full関数の書式

numpy.full(shape,value)
引数shapeは各次元の要素数を指定します.
引数valueは値を指定します.

[IN]

import numpy as np
a=np.full((4), 2)     #1次元配列
b=np.full((2, 4), 2) #2次元配列
print("1次元配列")
print( a )
print("2次元配列")
print( b )

[OUT]

1次元配列
[2 2 2 2]
2次元配列
[[2 2 2 2]
 [2 2 2 2]]

単位行列の作成[numpy.eye]

 numpy.eye関数で単位行列を作成することができます.単位行列は対角成分が1で非対角成分が0です.

numpy.eye関数の書式

numpy.eye(N,M=None,k=0,dtype=float)
N:出力の行数を指定します.
M:出力の行数を指示、デフォルトはNです.
k:対角線の位置を設定します.
0はデフォルトで主対角線を示し,正の値は上部に負の値は下部に対角線を作ります.
dtype:作成するデータの型式

・単純な5行5列の単位行列を作ります.

[IN]

import numpy as np
a=np.eye(N=5)   
print( a )

[OUT]

[[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.]]

対角線は配列の左上角から始まっています.

・対角線の位置をずらす

・5行5列の単位行列でk=1にします.

[IN]

import numpy as np
a=np.eye(N=5,k=1)   
print( a )

[OUT]

[[0. 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つ右にズレた位置から始まります.
・5行5列の単位行列でk=-1にします.

[IN]

import numpy as np
a=np.eye(N=5,k=-1)   
print( a )
[OUT]
[0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]]

対角線始は行が1つ下にズレた位置から始まります.
numpyで良く使われる配列の生成方法についてまとめました.参考になれば幸いです.

トップページへ戻る

 スポンサーリンク

コメント

タイトルとURLをコピーしました