sizeはNumPy配列(ndarray)の属性の1つで配列の要素数を保持しています。ここでは、size属性の確認方法を解説していきます。
1. ndarray.size属性の使い方
sizeはndarrayの配列の要素数を保持しています。これを参照するには、以下のようにndarray.sizeと書きます。
なお、sizeは正確にはnumpy.ndarrayクラスのインスタンス変数です。クラスやインスタンス変数については、『【Python】オブジェクト指向プログラミングの概念と書き方』や『Pythonでのクラス(class)の使い方』で解説していますので、目を通してみてください。
NumPyの配列のsizeプロパティは、配列の要素数をint型で保持しているインスタンス変数です(参照『Pythonのオブジェクト指向プログラミングの概念と書き方』)。
そして配列のsize属性の値は、「配列.size」で参照することができます。
早速以下のコードをご覧ください。1次元配列arr1を生成し、「arr1.size」でその要素数を参照しています。
import numpy as np
''' 1次元配列 '''
arr1 = np.array([1, 2, 3])
print(arr1)
print(arr1.size)
見たままの通り、要素数は3つなので、「3」と表示されています。
size属性は、2次元配列や3次元配列の場合も、奥行きや行、列の数に関係なく、その配列内の要素数を保持しています。
以下のコードは2次元配列ですが、行や列に関係なく、全体の要素数が保持されていることを確認できます。
''' 2次元配列 '''
arr2 = np.arange(6).reshape(2, 3)
print(arr2)
print(arr2.size)
3次元配列の場合も、奥行きや、行、列に関係なく、全体の要素数が保持されています。
''' 3次元配列 '''
arr3 = np.arange(12).reshape(2, 2, 3)
print(arr3, '\n')
print(arr3.size)
以上が、NumPy配列のsize属性です。
2. len関数との違い
ndarray.sizeの他に、要素数を調べることのできるPythonの組み込み関数にlen()があります。
len関数とndarray.sizeは機能が異なります。
len関数は『Pythonのリストの長さ(要素数)を確認する方法まとめ』で解説しているように、二重構造、三重構造になっている場合は、もっとも外側の要素の数を戻します。
そのため、内側の要素の数を取得したい場合は、[]でスライスする必要があります。
実際のコードで確認しましょう。
まず、1次元配列の場合は、ndarray.sizeと違いはなく、要素数を戻します。
import numpy as np
''' 1次元配列 '''
arr1 = np.array([1, 2, 3])
print(arr1)
print(len(arr1))
2次元配列の場合は、len()は行数を戻します。列数を取得したい場合は、スライスで行を指定します。
''' 2次元配列 '''
arr2 = np.arange(6).reshape(2, 3)
print(arr2)
print(len(arr2)) # 行数
print(len(arr2[0])) # 一行目の要素数
print(len(arr2[1])) # 二行目の要素数
3次元配列の場合、len()は奥行きの数を戻します。列数を取得したい場合は一重スライス、行数を取得したい場合は二重スライスで対処します。
''' 3次元配列 '''
arr3 = np.arange(24).reshape(2, 3, 4)
print(arr3, '\n')
print(len(arr3)) # 奥行き数
print(len(arr3[0])) # 一番表の奥行きの列の数(=行数)
print(len(arr3[0][0])) # 一番表の奥行きの1行目の要素数
以上がndarray.sizeとlen関数の違いです。
3. まとめ
以上、NumPyのndarray.sizeは、Numpy配列の要素数を保持しています。Python組み込み関数のlen()と異なり、二次元・三次元配列になっても、行数や列数を返すのではなく、全体の要素数を返します。
なお、ndarray.sizeとともに、以下の二つの属性にも目を通しておくと良いでしょう。
- ndarray.shape: 配列の形状を保持する属性
- ndarray.dtype: 配列のデータ型を保持する属性
コメント