numpy - 理解 NumPy 的非零函数

标签 numpy

我想了解 numpy 的 nonzero功能。以下是一个示例应用程序:

import numpy
arr = numpy.array([[1,0],[1,1]])
arr.nonzero()
--> (array([0, 1, 1]), array([0, 0, 1]))

我可以看到,因为 arr是二维的,nonzero() 的输出是一个 2 元组。但是,我不明白为什么元组的每个元素中的索引数超过了数组的行/列数。我知道
arr[arr.nonzero()]
--> array([1, 1, 1])

但是怎么……?

最佳答案

元组的每个元素都包含每个非零值的索引之一。因此,每个元组元素的长度就是数组中非零元素的数量。

从您的示例中,非零的索引是 [0, 0] , [1, 0] , 和 [1, 1] .元组的第一个元素是每个非零值的第一个索引:([0, 1, 1]) ,元组的第二个元素是每个非零值的第二个索引:([0, 0, 1]) .

您的第二个代码块只返回数组的非零值(如果返回值是混淆的一部分,我不清楚这个问题)。

>>> arr[arr.nonzero()]
array([1, 1, 1])

如果我们使用具有其他值的示例数组,这一点会更清楚。
>>> arr = numpy.array([[1,0],[2,3]])
>>> arr[arr.nonzero()]
array([1, 2, 3])

关于numpy - 理解 NumPy 的非零函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924033/

相关文章:

python - 从 numpy 距离数组中提取 N 个最近的对

python - 如何将具有字符串和整数值的多个数据帧转换为 4D 数据结构

python - 点积的矩阵推广

python - Python中根据特定列分解数据集

python - 有效地逐行比较两列中的列表

python - 在 Python 中查找重复矩阵?

python - 如何增加 Theano 保存模型的训练?

python - 计算 numpy 数组中一行中重复元素的数量

python - 将解决方案应用于实际数据时结果不正确

python - 根据条件更改 tensorflow 张量的值