我正在使用 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)]
关于python - 如何获得 numpy 数组中非零值的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018026/