python - 如何获得 numpy 数组中非零值的位置?

标签 python arrays numpy

我正在使用 np.nonzero() 但我不明白返回值

我试试

for groupPosition in np.nonzero(groupMatrix):
    print groupPosition

并返回 [0 0 1 2 3 3 3]

for groupPosition in zip(np.nonzero(groupMatrix)):
    print groupPosition

并返回 (array([0, 1, 0, 3, 0, 1, 3]),)

组矩阵:

[[ 1.  1.  0.  0.]
[ 1.  0.  0.  0.]
[ 0.  0.  0.  2.]
[ 3.  3.  0.  2.]]

但不要像 (0, 0) 那样返回位置

最佳答案

>>> import numpy as np
>>>
>>> groupMatrix = np.array([
...     [1, 1, 0, 0],
...     [1, 0, 0, 0],
...     [0, 0, 0, 2],
...     [3, 3, 0, 2]
... ])
>>> np.nonzero(groupMatrix)
(array([0, 0, 1, 2, 3, 3, 3], dtype=int64), array([0, 1, 0, 3, 0, 1, 3], dtype=int64))
>>> zip(np.nonzero(groupMatrix))
[(array([0, 0, 1, 2, 3, 3, 3], dtype=int64),), (array([0, 1, 0, 3, 0, 1, 3], dtype=int64),)]

使用zip(*...):

>>> zip(*np.nonzero(groupMatrix))
[(0, 0), (0, 1), (1, 0), (2, 3), (3, 0), (3, 1), (3, 3)]

zip(*a) 类似于 zip(a[0], a[1], ...)

>>> a = [(0, 1, 2), (3, 4, 5)]
>>> zip(a)
[((0, 1, 2),), ((3, 4, 5),)]
>>> zip(a[0], a[1])
[(0, 3), (1, 4), (2, 5)]
>>> zip(*a)
[(0, 3), (1, 4), (2, 5)]

参见 Unpacking Argument Lists .

关于python - 如何获得 numpy 数组中非零值的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018026/

相关文章:

python - 基于多种条件过滤像素

numpy - 设置所有标量和数组的统一 Numpy dtype(如何避免精度下降)

javascript - Django Ajax 请求与我的模板中返回的数据有关

python - 如何强制 pprint 每行打印一个列表/元组/字典元素?

java - 使用用户定义的方法删除数组中的重复项

c++ - 使用成员访问运算符 (.) 初始化结构中的 char 数组

python - 如何在Python中将 `self`传递给类似方法的对象

python - Python 中迭代列表的行为如何?

android - 从另一个类更新 RecyclerView

python - 如何处理python中64float精度的指数溢出?