当给定边界时,如何以Python方式从numpy数组中选择特定范围



我有3个数组,其中两个是1d,一个是2d数组。

l = [ 2.82839846 -6.30950578 -6.38959391 -0.27519359  2.6869558 ]
u = [ 3.19099915 -5.08752367 -6.24197166  0.23919663  3.41277894 ]
a = [[ 3.15995024 -3.70046728 -5.33644501 -0.27519359  6.59680683  ]
[ 3.20134879 -4.88752672 -6.3360199   1.18276442  4.67593146  ]
[ 3.94292226 -3.93983918 -6.38959391  1.30204279  4.76023172  ]
[ 5.10369086 -6.30950578 -4.88046264  0.30511958  2.6869558   ]
[ 4.79710151 -3.00969539 -3.35513095  0.79020593  4.15729757  ]
[ 2.82839846 -5.6875145  -6.21062225  0.04142778  3.64081071  ]
[ 4.45212618 -3.81156855 -4.7380557   2.52212191  5.13595999  ]
[ 3.20435142 -3.23760713 -5.70469897  0.91339003  2.72868361  ]]

我想做l <= a < u,这样我就得到了下面的数组。

r = [[ 2.82839846 -6.30950578 -6.38959391 -0.27519359  2.6869558 ]
[ 3.15995024  -5.6875145 -6.3360199  0.04142778   2.72868361 ]]

此外,如果在结果数组中,某些列的值比另一列多,那么我希望用0填充其他列。

r = [[ 2.82839846 -6.30950578 -6.38959391 -0.27519359  2.6869558 ]
[ 3.15995024  -5.6875145 -6.3360199   0.04142778   2.72868361 ]
[ 3.17945666     0          0         0.04032400       0      ]]

有没有任何有效的蟒蛇方法来完成上述

你可以做:

a.sort(0)
a[(l <= a) * (a <= u)]
array([ 2.82839846, -6.30950578, -6.38959391, -0.27519359,  2.6869558 ,
3.15995024, -5.6875145 , -6.3360199 ,  0.04142778,  2.72868361])

最新更新