Python

Python初学者向け:ndarrayについて基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

はじめに

Numpyについて扱っていきます。Numpyは数値計算ライブラリでNumerical Pythonの略です。特に行列演算を得意とします。今回はNumpyの独自のデータタイプであるndarrayについて基本から解説をしていきます。

NumPy Arrays(ndarray)

NumPyライブラリでは多次元配列を扱うことのできる独自の配列構造ndarrayがあります。ndarrayはn-dimentional arrayの略で、次元を持った配列、の意味です。早速見ていきましょう。

書式

ndarrayを作る方法の一つとしてnp.arrayを使う方法があります。書式を確認しておきましょう。

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])
要素が1つのとき

要素が1つでもnp.arrayで作ったものは「配列」となる

2次元配列

これはベクトルを縦に取りまとめたイメージです。2次元配列は行列ですね。

np.array([[1,2,3],[4,5,6],[7,8,9]])
2次元配列

2次元配列の場合も、リストの要素が1つの場合に注意が必要です。確認しておきましょう。

np.array([[1,2,3]])
2次元配列の注意事項

少しややこしいですね。つまり、np.array([1,2,3])とnp.array([[1,2,3]])は次元が違います。前者は1次元配列で、後者は2次元配列となります。

np.array([1,2,3])は一次元配列、np.array([[1,2,3]])は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]]])
3次元配列

これまでと同様に要素が1つでも3次元配列となることができます。np.array([[[1]]])は要素1つの3次元配列となります。

データ型

これまで触れてきていませんでしたが、ndarrayのデータ型はNumPy独自のデータ型となります。見てみましょう。

sample = np.array([[1,2,3],
                   [4,5,6],
                   [7,8,9]])
sample
2次元配列sample

この2次元配列sampleからデータにアクセスしてみましょう。リストと同じように考えることができます。

sample[0]
0行目の要素を指定

0行目の要素を指定したので、0行目の要素として格納されている[1,2,3]が返ってきています。さらにここから要素にアクセスしてみましょう。

sample[0][1]
2次元配列の要素へのアクセス

[1,2,3]のインデックス1である要素2が返ってきています。このデータ型はなんでしょうか?

type(sample[0][1])
データ型の確認

numpy.int32というデータ型であることがわかりました。これはNumpy独自のデータ型となります。このnumpy.int32はPythonのint型とは別物なので注意しましょう。

NumPyのndarrayの要素はNumPy独自のデータ型となる

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()を使えばあとからデータ型を変えられることを解説しました。

コメント

タイトルとURLをコピーしました