次のコードスニペットを検討してください。
import numpy as np
arr = np.array([True, True, False, True, False])
a = np.nonzero(arr)
b = np.nonzero(arr)[0]
a
の出力
:
(array([0, 1, 3], dtype=int64),)
b
の出力
[0 1 3]
質問:の出力とは異なりa、なぜ[0]がb 配列だけを含めて、dtypeを含めませんか?
tuple
を含むほとんどのpythonコンテナー 、repr
を使用str(a)
を呼び出すかどうかに関係なく、それらの要素を表示する またはrepr(a)
。np.nonzero
の結果tuple
です これは、最後の閉じ括弧の直前のコンマに気づくと視覚的に確認できます。ndarray
str
で表示されます 、データを通じて明確に表示できるdtypeは、明示的なdtypeラベルを取得しません。これにはnp.int_
が含まれます 、np.float_
(それは常に 小数点が続く場合でも小数点を取得します)、そしてnp.bool_
。b
以来 タプルから抽出され、標準のdtypeがあり、簡略化された形式で表示できます。a
に表示されるのと同様の出力形式を取得できます。repr(b)
を行うことによって 代わりに。