2

我有以下数据数组

In [56]:data
Out[56]: 
array([[  4360.,   6178.],
       [ 10906.,  14956.],
       [  5071.,   8963.],
       ..., 
       [ 16019.,  12300.],
       [ 12306.,   3327.],
       [ 13663.,  12641.]])

我想存储a第零个元素小于某个值value1且高于某个其他值的所有行value2

我尝试了以下

d[ 9057 > d[0::,0] > 8000, 0::]

d[d[0::,0] > 8000 and d[0::,0] < 9057, 0::]

但两者都因以下错误而停止

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

有没有一种有效的方法来做到这一点?谢谢。

4

1 回答 1

4

以下应该做到这一点:

d[(d[0::,0] > 8000) & (d[0::,0] < 9057), 0::]

顺便说一句,您可以将所有这些替换0:::

d[(d[:,0] > 8000) & (d[:,0] < 9057)]

我发现这在眼睛上更容易一些。

于 2013-01-24T16:54:52.947 回答