Python 关于尾随[0]在np.nonzero(arr)[0]中的作用的问题

Python 关于尾随[0]在np.nonzero(arr)[0]中的作用的问题,python,numpy,Python,Numpy,考虑以下代码段: 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的输出只包括数组而不包括数据类型?大多数python容器,包括tuple,使用repr来显示它们的元素,

考虑以下代码段:

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的输出只包括数组而不包括数据类型?

大多数python容器,包括
tuple
,使用
repr
来显示它们的元素,而不管您是调用
str(a)
还是
repr(a)
np.nonzero
的结果是一个
元组
,如果您注意到最后一个右括号前的尾随逗号,您可以直观地看到该元组

当使用
str
显示
ndarray
时,可以通过数据明确显示的数据类型不会得到明确的数据类型标签。这包括
np.int
np.float
(即使只有一个小数点,也总是会得到一个小数点)和
np.bool
。由于
b
是从元组中提取的,并且有一个标准的数据类型,因此它可以以简化的形式显示


您可以通过执行
repr(b)
获得类似于
a
的输出格式。

a
在我的机器上打印时不包括数据类型。你的
np.version.version
是什么?我的是1.15.4,它是1.16.4,用于Jupyter笔记本。