はじめに
Numpyについて扱っていきます。Numpyは数値計算ライブラリでNumerical Pythonの略です。特に行列演算を得意とします。今回はNumpyの独自のデータタイプであるndarrayについて基本から解説をしていきます。
NumPy Arrays(ndarray)
NumPyライブラリでは多次元配列を扱うことのできる独自の配列構造ndarrayがあります。ndarrayはn-dimentional arrayの略で、次元を持った配列、の意味です。早速見ていきましょう。
書式
ndarrayを作る方法の一つとしてnp.arrayを使う方法があります。書式を確認しておきましょう。
np.arrayの中にリストを入れることで、ndarrayを作ることができます。「リスト」の部分に渡すデータによって一元配列、二次元配列、・・・を作ることができます。見ていきましょう。
1次元配列
一次元配列はベクトルのイメージです。
# ライブラリのインポート
import numpy as np
np.array([1,2,3])
これはイメージしやすいですね。array([1,2,3])と返ってきています。これがnd.arrayです。型を確認しておきましょう。
type(np.array([1,2,3]))
一次元配列の注意点としては、要素が1つだけでも一次元配列となる点です。ベクトルのイメージと伝えると、要素が1つの場合はベクトルではないのでは??となりますが、np.arrayで作成しているものはすべて配列となります。次のコードをためしてみましょう。
np.array([1])
2次元配列
これはベクトルを縦に取りまとめたイメージです。2次元配列は行列ですね。
np.array([[1,2,3],[4,5,6],[7,8,9]])
2次元配列の場合も、リストの要素が1つの場合に注意が必要です。確認しておきましょう。
np.array([[1,2,3]])
少しややこしいですね。つまり、np.array([1,2,3])とnp.array([[1,2,3]])は次元が違います。前者は1次元配列で、後者は2次元配列となります。
3次元配列
3次元配列はさらに2次元でとりまとめたものを、さらに奥行方向に取りまとめたイメージです。縦横に取りまとめた(2次元)面が複数枚(3次元)あるイメージとなります。
np.array([[[1,2,3],[4,5,6],[7,8,9]],
[[10,11,12],[13,14,15],[16,17,18]],
[[19,20,21],[22,23,24],[25,26,27]]])
これまでと同様に要素が1つでも3次元配列となることができます。np.array([[[1]]])は要素1つの3次元配列となります。
データ型
これまで触れてきていませんでしたが、ndarrayのデータ型はNumPy独自のデータ型となります。見てみましょう。
sample = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
sample
この2次元配列sampleからデータにアクセスしてみましょう。リストと同じように考えることができます。
sample[0]
0行目の要素を指定したので、0行目の要素として格納されている[1,2,3]が返ってきています。さらにここから要素にアクセスしてみましょう。
sample[0][1]
[1,2,3]のインデックス1である要素2が返ってきています。このデータ型はなんでしょうか?
type(sample[0][1])
numpy.int32というデータ型であることがわかりました。これはNumpy独自のデータ型となります。このnumpy.int32はPythonのint型とは別物なので注意しましょう。
Numpy独自のデータ型のうちよく使うものをまとめておきます。
- np.uint8
符号なしの8bitの整数。0~255までの正の整数となる。一般的な画像データを扱う場合にこの形式を使う - np.float32
32bitの浮動小数点型。危害学習に使うデータを保存するときによく使う - np.float64
64bitの浮動小数点型。機械学習で実際に学習させるときによく使う
その他たくさん型がありますが、その名前から類推できるものばかりなので迷うことはないでしょう。ただ、Pythonのデータ型とは別物、という点だけおさえておきましょう。
このデータ型はdtypeで指定することができます。
np.array([1,2,3],dtype='uint8')
また以下のようにastypeで型を変換することもできます。
sample_array = np.array([1,2,3],dtype='uint8')
sample_array.astype(np.float32)
まとめ
今回はNumPyライブラリ独自の配列構造ndarrayを扱いました。ndarrayは多次元配列を扱うことができます。要素が1つだけでも次元の異なる配列があるので注意が必要なのでしたね。
また、ndarrayの要素は独自のデータ型になっているのでした。Pythonのデータ型と異なるのでこちらも注意が必要です。よくデータ分析時に使うデータ型としてnp.uint8, np.float32, np.float64があります。また、ndarray作成時にデータ型を指定するには、dtypeで指定することできること、astype()を使えばあとからデータ型を変えられることを解説しました。
コメント