Numpy チュートリアル - NumPy 配列の作成

  1. ゼロ配列
  2. ワンズアレイ
  3. 対角配列
  4. 三角配列

ゼロ配列

np.zeros

np.zeros は、すべての要素が 0 である配列を作成するために使用されます。その構文は、

np.zeros(shape, dtype=float, order='C')

どこ、

「形状」は行列のサイズであり、1 次元、2 次元、または複数の次元になります。

dtype はデフォルトでは float64 ですが、numpy のどのデータ型にも割り当てることができます。

いくつかのゼロ配列を作成しましょう

>>> import numpy as np
>>> np.zeros(5)		# it creates a 1D array with 5 zeros
array([0., 0., 0., 0., 0.])
>>> np.zeros(5, dtype='int8')	# it creates a 1D array with 5 zeros with the data type of int8
array([0, 0, 0, 0, 0], dtype=int8)
>>> np.zeros((4, 3)) # it creates a 4x3 zeros array
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

np.empty

場合によっては、指定された形状で配列を初期化するだけで、内部の初期化データは気にしないことがあります。np.empty を使用して初期化を高速化できますが、作成された配列の値が 0 であることを保証するものではないことに注意してください。

%timeit を使用して、np.empty()np.zeros() の実行時間を比較できます。

In [1]: %timeit np.empty((100, 100))
    715 ns ± 11.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [2]: %timeit np.zeros((100, 100))
    4.03 µs ± 104 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

明らかに、np.empty() は初期化において np.zeros() よりもはるかに高速です。np.zeros()(100, 100) の形状で配列を初期化するのに必要な時間は、約 17.5%だけです。

np.zeros_like

すでに配列があり、同じ形状のゼロ配列を作成するとします。この新しい配列を作成するには、従来の方法を使用できます。

test = np.array([[1,2,3],[4,5,6],[7,8,9]])
np.zeros(test.shape)

または、専用のメソッド-np.zeros_like() を使用して、新しい配列をより効率的に作成できます。

x = np.zeros_like(test)
注意

np.zeros_like() によって作成された配列は、指定された配列と同じ形状を持つだけでなく、それと同じデータ型も持ちます。

ワンズアレイ

np.ones

「ゼロ」と同様に、1 で埋められた配列を作成することもできます。np.ones() の構文とパラメーターは np.zeros() と同じです。

>>> import numpy as np
>>> np.ones(5)		# it creates a 1-D array with 5 ones
array([1., 1., 1., 1., 1.])
>>> np.ones(5, dtype='int8')	# it creates a 1-D array with 5 ones, and its data type is int8
array([1, 1, 1, 1, 1], dtype=int8)
>>> np.ones((4, 3)) # it creates an array of (4, 3) shape
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])

np.ones_like

np.zeros_like と同様に、np.ones_like を使用して、指定された配列と同じ形状の配列を新たに作成できます。

>>> test = np.array([[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0]])
>>> np.ones_like(test)
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])

対角配列

対角配列は、対角に 1 があり、他の場所に 0 がある 2 次元配列です。構文が np.eye() メソッドで作成できますが、

np.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')

どこ、

 パラメータ  データの種類  概要
 N  INT  生成されたマトリックスの行数を指定します。
 M  INT  (オプション)デフォルトは「なし」です。生成するマトリックスの列数を指定します。 「なし」の場合、N と等しくなります。
 k  INT  (オプション)デフォルトは 0 です。0 はメインの対角位置です。k が正の場合、k の変位で上対角線を作成します。k が負の場合、-k の変位で下の対角線が作成されます。
 dtype  データの種類  (オプション)デフォルト値は float です。作成された配列の要素のデータ型を指定します。

np.eye() の例

>>> import numpy as np
>>> np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
>>> np.eye(4, 3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 0.]])
>>> np.eye(3, 4)
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.]])
>>> np.eye(4, k=1)
array([[0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.],
       [0., 0., 0., 0.]])

np.identity()

np.identity は、主対角線に 1 の正方形の対角線配列を作成するため、特別な np.eye として扱うことができます。

numpy.identity(n,dtype = float)
 パラメータ  データの種類  説明
 n  INT  生成するマトリックスのサイズを指定します。N×N 正方配列を作成します。
 dtype  データの種類  (オプション)デフォルトは float です。要素のデータ型を指定します。

np.identity() の例

>>> import numpy as np
>>> np.identity(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

三角配列

np.tri() を使用して三角配列を作成できます。その構文は、

numpy.tri(N, M=None, k=0, dtype=<class 'float'>)

その入力パラメーターは np.eye() に似ています。

np.tri() の例

>>> import numpy as np
>>> np.tri(3)
array([[1., 0., 0.],
       [1., 1., 0.],
       [1., 1., 1.]])
>>> np.tri(4, k=1)
array([[1., 1., 0., 0.],
       [1., 1., 1., 0.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
comments powered by Disqus