【Python】NumPy配列を効率よく作成する方法

こんにちは!

今回は NumPy配列を効率よく作成する方法について紹介していきます。

以降のプログラムでは、簡略化のため、以下のNumPyライブラリのインポートは省略しますが、プログラムを実行する際には必ず忘れないようにしましょう。

import numpy as np




指定した範囲から配列を作成する

指定した範囲から配列を作成するには、「arange()」を用います。
これは、組み込み関数のrange()に相当します。

以下のプログラムは、指定した範囲から配列を作成するプログラムです。

a = np.arange(10)

print(a)

実行結果

[0 1 2 3 4 5 6 7 8 9]

arange()とreshape()を組み合わせることで、簡単に指定した範囲の多次元配列を作成することができます。

以下のプログラムは、指定した範囲の多次元配列を作成するプログラムです。

n = 2
m = 3
b = np.arange(n*m).reshape(n, m)

print(b)

実行結果

[[0 1 2]
 [3 4 5]]

開始値、終了値、ステップを指定して配列を作成することができます。

以下のプログラムは、引数を指定して配列を作成するプログラムです。

c = np.arange(5, 10, 2)

print(c)

実行結果

[5 7 9]




範囲を等分割した配列を作成する

範囲を等分割した配列を作成するには、「linspace()」を用います。

書式は次のようになります。

linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

startが開始値、
stopが終了値、
numが分割数です。

endpoint=Trueでstopの値を含み、endpoint=Falseで含みません。retstep=Trueで、ステップ間隔を返します。

以下のプログラムは、範囲を等分割した配列を作成するプログラムです。

a = np.linspace(0, 99, 10)

print(a)

実行結果

[ 0. 11. 22. 33. 44. 55. 66. 77. 88. 99.]




単位行列を作成する

NumPy配列では単位行列を簡単に作成することができます。

単位行列とは主対角線上の要素がすべて 1で、その他はすべて 0である行列のことです。

以下のプログラムは、単位行列を作成するプログラムです。

a = np.identity(3, dtype=int)

print(a)

実行結果

[[1 0 0]
 [0 1 0]
 [0 0 1]]




0または1のみの配列を作成する

NumPy配列では、0または1のみの配列を作成することができます。

ちなみに、0のみの行列は零行列と呼びます。

0のみの配列を作成する

以下のプログラムは、0のみの配列を作成するプログラムです。

z = np.zeros((2, 3), dtype=int)

print(z)

実行結果

[[0 0 0]
 [0 0 0]]

1のみの配列を作成する

以下のプログラムは、1のみの配列を作成するプログラムです。

o = np.ones((2, 3), dtype=int)

print(o)

実行結果

[[1 1 1]
 [1 1 1]]




要素を繰り返した配列を作成する

要素を繰り返した配列を作成するには、「repeat()」を用います。

repeat()は、各要素を引数文繰り返した配列を返します。

以下のプログラムは、要素を繰り返した配列を作成するプログラムです。

a = np.array([1, 2])
b = a.repeat(3)

print(b)

実行結果

[1 1 1 2 2 2]

repeat()とreshape()を組み合わせると、各行の値が同じ配列を作成することができます。

以下のプログラムは、各行の値が同じ配列を作成するプログラムです。

a = np.array([1, 2])
b = a.repeat(3).reshape(2, 3)

print(b)

実行結果

[[1 1 1]
 [2 2 2]]




CSVファイルから配列を作成する

NumPy配列では、CSVモジュールを使用しなくても簡単にCSVファイルから配列を作成することができます。

CSVモジュールを用いてCSVファイルを読み書きする方法を以下の記事にまとめているので、是非見てみてください。

以下のプログラムは、CSVファイルから配列を作成するプログラムです。
読み込むファイルは以下のfile1です。

skiprowsは、読み飛ばす行数を指定します。
ここでは、skiprows=1とすることでヘッダを読み飛ばしています。

a = np.loadtxt("file1.csv", delimiter=',', skiprows=1, dtype=int)

print(a)

実行結果

[[160  60]
 [170  70]]




まとめ

NumPy配列を効率よく作成する方法について理解できたでしょうか?

NumPy配列を作成することは、NumPy配列を扱う上で欠かせないことです。なので様々な配列の作成方法を身につけるようにしましょう!

まとめ記事に戻る