根据范围中的值筛选numpy数组中的行

根据范围中的值筛选numpy数组中的行,numpy,range,Numpy,Range,让一个数组: a =np.array([[1,2],[3,-5],[6,-15],[10,7]]) 要获得第二列元素在-6以上的行,可以执行以下操作 >>> a[a[:,1]>-6] array([[ 1, 2], [ 3, -5], [10, 7]]) 但是如何得到第二个元素在-6之间的行;3. 我试过: 并且(这会引发错误): 其中: masked_array(data = [[-- --] [-- --] [6 -15] [10

让一个数组:

 a =np.array([[1,2],[3,-5],[6,-15],[10,7]])
要获得第二列元素在-6以上的行,可以执行以下操作

>>> a[a[:,1]>-6]
array([[ 1,  2],
   [ 3, -5],
   [10,  7]])
但是如何得到第二个元素在-6之间的行;3. 我试过:

并且(这会引发错误):

其中:

 masked_array(data =
 [[-- --]
  [-- --]
  [6 -15]
  [10 7]],
         mask =
  [[ True  True]
  [ True  True]
  [False False]
  [False False]],
   fill_value = 999999)
但结果并不太清楚

谢谢
jp

内部的
np.ma.masked_(a,-6,3)
将创建一个对象,其中-6和3之间的值被屏蔽(即标记为无效)。换句话说,您正在筛选出介于-6和3之间的值。 相反,您应该在(a,-6,3)外部使用
np.ma.masked\u

请注意,使用此函数,您将逐个元素过滤掉整个数组,这不是您想要的


另一种解决方案中给出的索引方法是迄今为止最简单易懂的。

我在做一个[(3>a[:,1])和(a[:,1]>-6]),这会引起error@Pierre总经理,请在这里发表您的意见,或作为一个单独的答案
>>> 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)
>>> a[ (3>a[:,1]) & (a[:,1]>-6) ]

array([[ 1,  2],
      [ 3, -5]])
>>> 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)