20

配列をしましょう:

 a =np.array([[1,2],[3,-5],[6,-15],[10,7]])

-6 を超える 2 列目の要素を含む行を取得するには、次のようにします。

>>> a[a[:,1]>-6]
array([[ 1,  2],
   [ 3, -5],
   [10,  7]])

しかし、-6;3 の間の 2 番目の要素を持つ行を取得する方法は? 私は試した:

>>> a[3>a[:,1]>-6]

また、(エラーが発生します):

>>> np.ma.masked_inside(a,-6,3)

これは次を与えます:

 masked_array(data =
 [[-- --]
  [-- --]
  [6 -15]
  [10 7]],
         mask =
  [[ True  True]
  [ True  True]
  [False False]
  [False False]],
   fill_value = 999999)

しかし、結果はあまり明確ではありません

ありがとうございます

4

2 に答える 2

36
>>> a[ (-6<a[:,1]) & (a[:,1]<3) ]

array([[ 1,  2],
      [ 3, -5]])
于 2012-10-25T10:28:09.623 に答える
5

は、-6 から 3 までの値がマスクされた (つまり、無効としてフラグが立てられた) オブジェクトnp.ma.masked_inside(a, -6, 3)を作成します。MaskedArrayつまり、-6 から 3 の間の値を除外しnp.ma.masked_outside(a, -6, 3)ています。代わりに、次を使用する必要があります。

>>> a = np.array([[1,2],[3,-5],[6,-15],[10,2]])
>>> np.ma.masked_outside(a,-6,3)
>>> masked_array(data =
 [[1 2]
 [3 -5]
 [-- --]
 [-- 2]],
             mask =
 [[False False]
 [False False]
 [ True  True]
 [ True False]],
       fill_value = 999999)

この関数を使用すると、要素ごとに配列全体を除外していることに注意してください。これは、必要なものではありません。

別のソリューションで示されているインデックス作成のアプローチは、最も簡単で理解しやすいものです。

于 2012-10-25T16:07:26.383 に答える