根据范围中的值筛选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)