NumPy チュートリアル-NumPy 多次元配列-ndarray
胡金庫
2023年1月30日
NumPy は、基本的なデータ構造として多次元配列を使用するライブラリです。NumPy の唯一のデータ構造は ndarray
ですが、Python プリミティブ list
データタイプではありません。リストの実行は比較的遅くなります。
NumPy の基礎である ndarray
を学習すると、NumPy が高速コンピューティングを実現できる理由を理解できます。
ndarray 定義
ndarray
は、n 次元配列の略語、つまり多次元配列です。ndarray
は、固定サイズのアイテムの多次元で同種の配列を表す配列オブジェクトです。
次元と要素の数は形状によって定義されます。これは、各次元の要素の数を表す N 個の整数のタプルです。配列内の要素タイプは、dtype
-data-type object
によって定義されます。
上記の文を素人の言語で説明しましょう。ndarray
オブジェクトに保存されるすべての要素は、同じデータ型とサイズでなければなりません。
ndarray
データ型の特性は次のように要約されます。
- 同じタイプの要素のみを保存できます
- 各次元のデータ量は同じである必要があります。たとえば、2D
ndarray
はすべての列、そしてもちろん各行で同じ量の要素を持っている必要があります。 - C 言語で書かれており、行列演算を最適に実行できます。
ndarray の属性
ndarray
の属性をリストしましょう。
属性 | 説明 |
---|---|
T |
転置行列。配列が 1 D の場合、元の配列が返されます。 |
data |
配列内のデータの開始位置を指す Python バッファーオブジェクト。 |
dtype |
ndarray に含まれる要素のデータ型。 |
flags |
ndarray データをメモリに保存する方法に関する情報(メモリレイアウト)。 |
flat |
ndarray を 1 次元配列に変換する反復子。 |
imag |
ndarray データの虚数部 |
real |
ndarray データの実部 |
size |
ndarray に含まれる要素の数。 |
itemsize |
バイト単位の各要素のサイズ。 |
nbytes |
ndarray が占有する合計メモリ(バイト単位)。 |
ndim |
ndarray に含まれる次元の数。 |
shape |
ndarray の形状(結果はタプルです)。 |
strides |
各次元方向で次に隣接する要素に移動するのに必要なバイト数は、タプルで表されます。 |
ctypes |
ctypes モジュールで処理される反復子。 |
base |
ndarray のベースとなるオブジェクト(参照されているメモリ)。 |
ndarray
の属性にアクセスすると、.T
を使用してオブジェクトの転置を取得しても、ndarray
インスタンスのデータは変更されません。新しい ndarray
オブジェクトを取得しますが、元のデータは変更しません。
サンプルコードを使用して、各属性の特定の意味を見てみましょう。
>>> import numpy as np
>>> a = np.array([1, 2, 3])
NumPy
ライブラリをインポートして、新しい 1 次元配列を作成する必要があります。そのデータ型とその要素のデータ型を確認できます。
>>> type(a)
numpy.ndarray
>>> a.dtype
dtype('int32')
新しい 2 次元配列を作成して、その属性を確認しましょう。
>>> b = np.array([[4, 5, 6], [7, 8, 9]])
>>> b
array([[4, 5, 6],
[7, 8, 9]])
>>> b.T # get the transpose of b
array([[4, 7],
[5, 8],
[6, 9]])
>>> b # b keeps unmodified
array([[4, 5, 6],
[7, 8, 9]])
>>> a.size # a has 3 elements
3
>>> b.size # b has 6 elements
6
>>> a.itemsize # The size of element in a. The data type here is int64 - 8 bytes
8
>>> b.nbytes # check how many bytes in b. It is 48, where 6x8 = 48
48
>>> b.shape # The shape of b
(2, 3)
>>> b.dnim # The dimensions of b
2