こんにちは!np.arrayには、配列の要素数を教えてくれる機能np.ndarray.sizeがあります。
似たような機能に、np.ndarray.shapeやlen関数がありますね。
特にlenとは似ている部分が多いので、この記事ではlenとの違いに着目してsizeについて解説してきます!
sizeの使い方
※この記事のコードは、jupyter notebookやjuputer labを使って動作を確認しました。
コードを試すときは是非これらを使ってみてください。
sizeはnumpy.ndarray (numpy.array)のインスタンス変数です。
関数ではないことに注意してください。
まずはライブラリをimportしておきます。
# コード In [1]: import numpy as np
sizeで配列の要素数を取得する
np.array(np.ndarray)のsize属性を使うと、配列の形状を確認することができます。
確認のため、サンプル配列を作って試してみましょう。
# コード In [2]: a = np.arange(0,20) b = np.reshape(a, (4,5)) c = np.reshape(a, (2,2,5))
# コード In [3]: a # Jupyterではprint(a)の代わりにaと変数名を書いても確認ができます。
# 出力結果 Out [3]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
# コード In [4]: b
# 出力結果 Out [4]: array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
# コード In [5]: c
# 出力結果 Out [5]: array([[[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9]], [[10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]])
今回作った配列の型を確認しましょう。
Pythonではtype関数でオブジェクトの型を確認できました。
# コード In [6]: print(type(a)) print(type(b)) print(type(c))
# 出力結果 [6]: <class 'numpy.ndarray'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>
sizeのようなインスタンス変数は、メソッドのように「インスタンス.変数名」としてアクセスすると中身が確認できます。
# コード In [7]: print(a.size) print(b.size) print(c.size)
# 出力結果 [7]: 20 20 20
多重配列にsizeを適用した時、中に入っている配列の数ではなく、要素の数が数え上げられていることに注意してください。
len関数との違い
sizeと似た関数に、len関数があります。
この関数もlistやarrayの要素数を数えますが、多重配列に適用した場合、中にはいっている配列の数を数えているところが異なります。
# コード In [8]: print(len(a)) print(len(b)) print(len(c))
# 出力結果 [8]: 20 4 2
この動作はlistに対して行っても同様です。
# コード In [9]: a_ = list(a) b_ = list(b) c_ = list(c)
# コード In [10]: print(len(a)) print(len(b)) print(len(c))
# 出力結果 [10]: 20 4 2
また、sizeはあくまでもnp.ndarrayのインスタンス変数なので、listなどの他の配列っぽいオブジェクトには使えません。
まとめ
この記事では、NumPyの配列の要素数を確認する機能、ndarray.sizeについて紹介しました。
sizeを始めとして、ndarrayには様々な便利な機能がついています。
listではできなかったあれこれが簡単に使える機能がたくさんあるので、ぜひ使いこなしてプログラミングに活かしてください!