HOWTO · NumPy

NumPy 配列の長さを取得する

NumPy 配列では、`len(array)` で先頭軸の長さ、`array.size` で全要素数、`array.shape` で各次元の長さを確認できます。

このページの内容

NumPy 配列では、len(array) で先頭軸の長さ、array.size で全要素数、array.shape で各次元の長さを確認できます。これらが答える問いは異なります。たとえば2次元配列では、長さは行数、要素数はすべての値の合計数、形状は行数と列数を表します。

NumPy 配列の長さと全要素数を取得する

組み込み関数の len() は、1つ以上の次元を持つ配列の先頭軸の長さを返します。1次元配列では、これは全要素数と同じです。多次元配列では、個々の値をすべて数えるのではなく、最も外側のまとまりの数を返します。

ndarray.size 属性は、すべての軸にわたる要素の総数を返します。括弧は付けず、array.size と書きます。1次元配列でも多次元配列でも使え、要素を数えるために配列を平坦化する必要はありません。

次の例は単独で実行でき、NumPy が必要です。

このセクションのコードと表示されるラベルや出力は英語のままです。

import numpy as np

vector = np.array([1, 2, 3, 4, 5, 6])
array = np.array([[1, 2, 3], [4, 5, 6]])

print("Vector length:", len(vector))
print("Vector element count:", vector.size)
print("Array length:", len(array))
print("Array element count:", array.size)
Vector length: 6
Vector element count: 6
Array length: 2
Array element count: 6

ベクトルには1つの軸に沿って6個の値があるため、長さと全要素数は同じです。2次元配列は3個ずつの値を含む行が2つあります。そのため先頭軸の長さは行数を表し、全要素数には両方の行の値が含まれます。

NumPy には関数 np.size(array) もあり、軸を指定しない場合は全要素数を返します。この関数には属性と異なり軸を指定でき、np.size(array, axis=1) は2番目の軸の長さを返します。全要素数には属性を、特定の次元の長さには軸を指定した関数を使います。どちらも、重複しない値やゼロ以外の値だけを数えるものではありません。

NumPy 配列の次元を確認する

ndarray.shape 属性は、各軸の長さを1つずつ並べたタプルを返します。括弧は付けず、array.shape と書きます。対応する関数は np.shape(array) で、こちらもスカラーの要素数ではなく形状を返します。

上の2次元配列の形状は (2, 3) で、行が2つ、列が3つあることを示します。行数には array.shape[0]、列数には array.shape[1] を使います。rows, columns = array.shape のように展開できるのは、配列がちょうど2次元の場合だけです。

要素が6個ある1次元配列の形状は整数の 6 ではなく、要素が1つのタプル (6,) です。(2, 3, 4) のような形状は3つの軸を表します。全要素数を求めるには、すべての軸の長さを掛け合わせます。最初の2つだけを掛ける方法は、高次元の配列には一般化できません。合計だけが必要なら array.size を使います。

形状タプルの要素数は配列の次元数で、array.ndim でも確認できます。np.array(7) のようなスカラー配列は形状が () で要素を1つ持ちますが、先頭軸がないため len() は使えません。見慣れない配列が表のように扱えない場合は、インデックス指定や次元の展開をする前に形状を確認してください。