NumPy チュートリアル-NumPy 多次元配列-ndarray

胡金庫 2023年1月30日
  1. ndarray 定義
  2. ndarray の属性
NumPy チュートリアル-NumPy 多次元配列-ndarray

NumPy は、基本的なデータ構造として多次元配列を使用するライブラリです。NumPy の唯一のデータ構造は ndarray ですが、Python プリミティブ list データタイプではありません。リストの実行は比較的遅くなります。

NumPy の基礎である ndarray を学習すると、NumPy が高速コンピューティングを実現できる理由を理解できます。

ndarray 定義

ndarray は、n 次元配列の略語、つまり多次元配列です。ndarray は、固定サイズのアイテムの多次元で同種の配列を表す配列オブジェクトです。

次元と要素の数は形状によって定義されます。これは、各次元の要素の数を表す N 個の整数のタプルです。配列内の要素タイプは、dtype-data-type object によって定義されます。

上記の文を素人の言語で説明しましょう。ndarray オブジェクトに保存されるすべての要素は、同じデータ型とサイズでなければなりません。

ndarray データ型の特性は次のように要約されます。

  1. 同じタイプの要素のみを保存できます
  2. 各次元のデータ量は同じである必要があります。たとえば、2D ndarray はすべての列、そしてもちろん各行で同じ量の要素を持っている必要があります。
  3. 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
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook