こんにちは!
皆さんはNumPy配列を使っていますか?
NumPy配列は様々な操作ができ、とても便利な配列です。
そこで今回はNumPy配列の様々な作成方法について紹介していきます。
以降のプログラムでは、簡略化のため、以下のNumPyライブラリのインポートは省略しますが、プログラムを実行する際には必ず忘れないようにしましょう。
import numpy as np
NumPy配列の基本的な作成方法
まず初めに、基本的な、1次元のNumPy配列の作成方法についてみていきましょう。
リストからNumPy配列を作成する
リストからNumPy配列を作成するには、np.array(リスト)と記述します。
以下のプログラムは、リスト[1, 2, 3]からNumPy配列を作成するプログラムです。
a = np.array([1, 2, 3])
print(a)
実行結果
[1 2 3]
print()を用いて出力した場合、要素と要素は空白で区切られます。
タプルからNumPy配列を作成する
リストと同じように、タプルからもNumPy配列を作成することができます。
例を見てみましょう。
以下のプログラムは、タプル(1, 2, 3)からNumPy配列を作成するプログラムです。
b = np.array((1, 2, 3))
print(b)
実行結果
[1 2 3]
リストの場合と同様に、print()を用いて出力した場合、要素と要素は空白で区切られます。
要素の型を指定して作成する
NumPy配列の要素の方を指定して配列を作成することができます。
要素の型の指定方法
要素の方を指定するには、「dtype=型」と指定します。
以下のプログラムは、要素の方をint型と指定してNumPy配列を作成するプログラムです。
a = np.array([1, 2.5, 3], dtype=int)
print(a)
実行結果
[1 2 3]
以下のプログラムは、要素の方をfloat型と指定してNumPy配列を作成するプログラムです。
b = np.array([1, 2.5, 3], dtype=float)
print(b)
実行結果
[1. 2.5 3. ]
1つ目のプログラムはint型、2つ目のプログラムはfloat型に指定しています。
複素数型に指定する場合は、dtype=complex と指定します。
数字を文字列に変換して作成する
NumPy配列を作成する際に、数字を文字列に変換することができます。
以下のプログラムは、数字が格納されたリストを、文字列に変換してNumPy配列を作成するプログラムです。
c = np.array([1, 2.5, 3], dtype="<U")
print(c)
実行結果
['1' '2.5' '3']
「’ ‘」がついて文字列に変換されてますね。
また、数字を文字列に変換する際に、文字列の長さを指定することもできます。
文字列の長さには「.」も含まれるため注意してください。
以下のプログラムは、文字列の長さを4に指定してNumPy配列を作成するプログラムです。
d = np.array([12345, 1.234, 12.3], dtype="<U4")
print(d)
実行結果
['1234' '1.23' '12.3']
多次元配列を作成する
多次元配列の作成方法について見ていきましょう。
多次元配列の作成方法
以下のプログラムは、多次元リスト[[1, 2, 3], [4, 5, 6]]からNumPy配列を作成するプログラムです。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
実行結果
[[1 2 3]
[4 5 6]]
NumPy配列を用いると、出力される際に、次元ごとに改行されるため、大規模な配列を出力する際は、綺麗に表示でき、非常に見やすくなります。
その他の二次元配列を綺麗に表示させる方法は以下の記事で紹介しているため、興味がある方は、ぜひご覧ください。
1次元配列を多次元配列に変換する
1次元配列を簡単に多次元配列に変換することができます。
変換するには、「reshape()」を用います。第一引数に行数、第二引数に列数を指定します。
以下のプログラムは、一次元リスト[1, 2, 3, 4, 5, 6]を2×3の多次元NumPy配列に変換するプログラムです。
b = np.array([1, 2, 3, 4, 5, 6])
b = b.reshape(2, 3)
print(b)
実行結果
[[1 2 3]
[4 5 6]]
多次元配列を1次元配列に変換する
多次元配列を1次元配列に変換することもできます。
変換するには、「ravel()」または「flatten()」を用います。両者の違いは、flatten()は新しくメモリを確保する点です。
以下のプログラムは、多次元リスト[[1, 2, 3], [4, 5, 6]]を1次元のNumPy配列に変換するプログラムです。
c = np.array([[1, 2, 3], [4, 5, 6]])
c = c.ravel()
print(c)
d = np.array([[1, 2, 3], [4, 5, 6]])
d = d.flatten()
print(d)
実行結果
[1 2 3 4 5 6]
まとめ
様々なNumPy配列の作成方法について理解できたでしょうか?
NumPy配列には、通常の配列とは違う様々な利点があるので。しっかりと使えるようにしましょう!
まとめ記事に戻る