只是好奇心,我似乎无法弄清楚,它一定是简单的东西!任何想法都会非常有帮助!numpy.where()函数仅用于精确匹配?
两个数组,y中只有一个值匹配x中的任何值。我的代码将迭代x中的每个值,并在y中找到匹配值并计算每个值的距离。它需要去找到一个匹配的值的最小距离输入在z [i,j]
它的工作,直到我把1更改为1.1,我尝试允许它寻找值的一些变化。如果y中的“1”可以在0.9-1.0之间变化,我怎么解释它?
x = [[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]
y = [[2,2,2,2,2],[2,2,2,2,2],[2,2,1,2,2],[2,2,2,2,2],[2,2,2,2,2]]
xx = numpy.array(x)
yy = numpy.array(y)
zz = numpy.ones((5,5))
for i in range(0,5):
for j in range(0,5):
match = numpy.where((xx[i,j] == yy))
distance = sqrt((i-(np.array(match[0])))**2 + (j -(np.array(match[1])))**2)
zz[i,j] = min(distance)
我试图的变化:
match = numpy.where((yy-0.1 <= xx[i,j] <= yy+0.1))
“错误:ValueError异常:阵列的具有多于一个元素的真值是不明确的使用a.any()或a.all(。 )”
顺便说一下......在第二个** 2的前面有一个缺失的''' – plonser 2015-03-31 17:07:33
哎呀!感谢指出:) – Ciaran 2015-03-31 17:16:08
我认为它是在'** 2'的前面...不落后...除非你想要负数的平方根;) – plonser 2015-03-31 17:17:42