python其中函数不起作用

时间:2016-02-24 14:55:12

标签: python numpy

我正在处理名为LON的经度数组,但我遇到了numpy.where()函数的一些问题。

>>> print LON[777,777]
13.4635573678
>>> print np.where(LON == 13.4635573678)[0]
[]
>>> print np.where(LON == 13.4635573678)[1]
[]

它找不到数组等于当前存在的值的LON条目。问题与我正在处理双变量的事实有关吗?因为直到现在np.where()总是对整数,浮点数和字符串都很好......

1 个答案:

答案 0 :(得分:3)

解决此问题的一种方法可能是使用> BX = sapply(vlr, function (x) 1.5+0.9*min(20,x)) > BX [1] 17.70 17.79 17.88 17.97 18.06 18.15 18.24 18.33 18.42 18.51 18.60 18.69 18.78 18.87 18.96 [16] 19.05 19.14 19.23 19.32 19.41 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 [31] 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 [46] 19.50 19.50 19.50 19.50 19.50 19.50 19.50 19.50 与大致匹配:

np.where

当然,如果epsilon(本例中为0.1)太大,这可能会给你多个匹配,但如果数组中有多个条目,则使用完全匹配时可能会出现相同情况具有相同的坐标。

修改:正如in comments指出的那样,您也可以使用np.isclose,即使在Python >>> X = np.linspace(1, 10, 100).reshape((10,10)) >>> np.where(abs(X - 6.3) < 0.1) (array([5, 5]), array([8, 9])) >>> X[np.where(abs(X - 6.3) < 0.1)] array([ 6.27272727, 6.36363636]) 不可用的情况下也是如此。但请注意,math.isclose不会提供坐标数组,而是np.isclose / True数组。如果您需要坐标,则可以再次将False的结果通过np.close

np.where

或者,您可以考虑更改从>>> np.where(np.isclose(X, 6.3636)) (array([5]), array([9])) >>> X[np.isclose(X, 6.3636)] array([ 6.36363636]) 数组中为您提供坐标的函数,以返回数组中该值的位置。这样,您根本不需要使用LON