2024-09-29 07:20:20 发布
网友
我在用np.非零()我不明白回报
我尽力了
for groupPosition in np.nonzero(groupMatrix): print groupPosition
返回[0 0 1 2 3 3 3]
并返回(数组([0,1,0,3,0,1,3]),)
群组矩阵:
[[ 1. 1. 0. 0.] [ 1. 0. 0. 0.] [ 0. 0. 0. 2.] [ 3. 3. 0. 2.]]
但不要像a(0,0)那样返回位置
尝试以下操作:
import numpy as np var = [ [1.0, 1.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 2.0], [3.0, 3.0, 0.0, 2.0] ] rows, cols = np.nonzero(var) for r, c in zip(rows, cols): print var[r][c]
退货:
您得到的结果是,因为np.nonzero返回一个元组,因为数组有2个维度,所以它有两个数组。现在,每个数组都需要一起使用,所以在我的示例中,函数返回行号,然后返回列号。让我们看看:
np.nonzero
>>> import numpy as np >>> var = [ [1.0, 1.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 2.0], [3.0, 3.0, 0.0, 2.0] ] >>> >>> non_zeroes = np.nonzero(var) >>> non_zeroes (array([0, 0, 1, 2, 3, 3, 3]), array([0, 1, 0, 3, 0, 1, 3]))
如果我们仔细观察一下,就会发现var[0][0]确实是非零的。var[3][3]也是。但是,在第一个元组中看不到2,在相应的索引中看不到另一个{}。在
var[0][0]
var[3][3]
2
>>> 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(*...)
{{cd2>>>> 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)] 见^{}。在
>>> 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)]
见^{}。在
尝试以下操作:
退货:
^{pr2}$您得到的结果是,因为
np.nonzero
返回一个元组,因为数组有2个维度,所以它有两个数组。现在,每个数组都需要一起使用,所以在我的示例中,函数返回行号,然后返回列号。让我们看看:如果我们仔细观察一下,就会发现}。在
var[0][0]
确实是非零的。var[3][3]
也是。但是,在第一个元组中看不到2
,在相应的索引中看不到另一个{使用
^{pr2}$zip(*...)
:{{cd2>
见^{} 。在
相关问题 更多 >
编程相关推荐