Python NumPy / ndarray の基礎 #3
株式会社リュディアです。今回も NumPy についてまとめていきます。
前回までの NumPy / ndarray の基礎についてのまとめへのリンクは以下を参考にしてください。
今回も以下のリンクの内容を元にまとめを作っていきます。
前回は ndarray の初期化を行いました。今回は簡単な操作から始めてみます。以下のコードを見てください。
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
print(type(x))
print(x.shape)
print(x.dtype)
y = x[:,1]
print(y)
y[0] = 9
print(y)
print(x)
#
# <class 'numpy.ndarray'>
# (2, 3) # print(x.shape)の出力
# int32 # print(x.dtype)の出力
# [2 5] # print(y) の出力
# [9 5] # print(y) の出力
# [[1 9 3] # 次行含めて print(x) の出力
# [4 5 6]] #
#
順番にみていきます。type(x) は x の型なので numpy.ndarray のクラスであることがわかりますね。
次に x.shape です。出力は (2, 3) で、これは行列の形状です。2行3列であることを示しています。(縦の行数、横の列数)と表示されることに注意してください。
次は x.dtype です。これは配列の要素の型を出力しています。最初の宣言で np.int32 としているので int32 型と表示されます。型の種類については本まとめの最後に記載していますので参考にしてください。
y = x[:, 1] は列を 0 から数えて 1列目、つまり中央の列を取り出す操作になります。このような処理をスライシングと呼びスライシングは別途まとめますんのでここでは詳細は書きません。ここでは y = [2 5] であることだけ理解してください。
次に y[0] = 9 としているので y = [2 5] から y = [9 5] と書き換えられていることを確認しています。最後に再度、元の x を表示すると 0行 1列の数が 2 から 9 になっていることに注意してください。NumPy を使い始めて最初にはまる部分です。変数 y でのみ書き換えたつもりが元の変数 x でも要素が書き変わっています。なかなか慣れるまでは恐ろしい仕様です。注意してください。
最後に NumPy の dtype のリストを以下につけておきます。dtype には以下の種類があります。扱うデータによって最適なものを選択することが重要です。例えば色深度 8ビットの画像データであれば int8 を利用すべきです。最も汎用的な実数データ型である float128 を使うと急激に利用メモリサイズが大きくなるのでご注意ください。
では、ごきげんよう。