首页 > 解决方案 > 关于 np.nonzero(arr)[0] 中尾随 [0] 的作用的问题

问题描述

考虑以下代码片段:

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?

标签: pythonnumpy

解决方案


大多数 Python容器(包括tuple. 结果是 a ,如果您注意到最后一个右括号之前的尾随逗号,您可以直观地看到它。reprstr(a)repr(a)np.nonzerotuple

当 anndarray与 一起显示时str,可以通过数据明确显示的 dtype 不会获得明确的 dtype 标签。这包括np.int_, np.float_(它总是有一个小数点,即使只是一个尾随的小数点)和np.bool_. 由于b已从元组中提取并具有标准 dtype,因此可以以简化形式显示。

相反,您可以获得类似于您所看到的输出格式arepr(b)


推荐阅读