2

私は次のデータの配列を持っています

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

a0番目の要素が特定の値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 に答える