NumPy チュートリアル - NumPy 配列の作成
ゼロ配列
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.]])