只是好奇心,我似乎無法弄清楚,它一定是簡單的東西!任何想法都會非常有幫助!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