はじめに
最近Tensorflow
を触り始めて、最初にNumpy
の配列ってどんな奴なんだ?となりました。
私はPythonは超初心者なので変なことを書いているかもしれませんがあしからず。
では早速見ていきましょう。
numpy.ndarrayの概要
numpy.ndarray
は多次元配列を扱うクラスのことです。
docs.scipy.org
ただこれと結構似たコレクションとして標準の配列やリストもあります。
Pythonのリストと配列とnumpy.ndarrayの違いと使い分け | note.nkmk.me
リストとnumpy.ndarray
は多次元配列を表現できるという似た性質をもちます。(配列は一次元のみ)
import numpy as np # list a = [[1, 2, 3], [4, 5]] print(a) # [[1, 2, 3], [4, 5]] # numpy.ndarray b = np.array([[1, 2, 3], [4, 5]]) print(b) # [list([1, 2, 3]) list([4, 5])]
というわけで機械学習では多次元ベクトルがよく登場するので多次元配列ができない配列はNGというわけです。
加えてnumpy.ndarray
には以下の性質があるようです。
- 同じ型しか格納できない
- 数値計算のためのメソッド・関数が豊富で、高速な演算が可能
定義
実際にどのように定義されているか見てみましょう。
class numpy.ndarray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)
引数 | 型名 | 意味 |
---|---|---|
shape | tuple of ints | ndarrayの形状(shape)をタプルで表したもの |
dtype | data-type | ndarrayに含まれる要素が持つデータ型 |
buffer | object exposing buffer interface | バッファーとして読み込むオブジェクト |
offset | int | バイト単位で、どこの地点からデータを読み込むか |
strides | tuple of ints | 各次元方向に1つ隣の要素に移動するために必要なバイト数をタプルで表示したもの |
order | {‘C’, ‘F’} |
基本はshape
,dtype
くらいを使う感じなんですかね。
使ってみる
import numpy as np a = np.array([1, 2, 3]) # リスト print(a) # [1 2 3] print(a[0]) # 1 b = np.array((4, 5, 6)) # タプル print(b) # [4 5 6] c = np.zeros(3) print(c) # [0. 0. 0.] d = np.array([[1, 2, 3], [4, 5, 6]]) print(d[0,1]) # 2
追記)よくよく見たら紹介したコンストラクタを使っていませんでしたね。後で追加します。
その他四則演算等は以下の記事が分かりやすかったです。
www.headboost.jp