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

胡金庫 2023年1月30日
  1. ゼロ配列
  2. ワンズアレイ
  3. 対角配列
  4. 三角配列
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.]])
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook