我有一个 2D NumPy包含如下元素的数组:
[[-10, 0]
[-9, 1]
[ 9, -5]
[-8, 6]
[-7, -5]
[-7, -6]
[ 0, -10]]
我想存储仅那些元素:
- 第一列的值在范围内:
-10 <= x <= 0
和
- 第二列的值在范围内:
-9 <= y <= 1
选择后的数组应该如下所示:
[[-10, 0]
[-9, 1]
[-7, -6]
[-7, -5]]
请您参考如下方法:
这是一个向量化的方法-
In [78]: a # Input array
Out[78]:
array([[-10, 0],
[ -9, 1],
[ 9, -5],
[ -8, 6],
[ -7, -5],
[ -7, -6],
[ 0, -10]])
In [79]: col0m = (a[:,0]>=-10) & (a[:,0]<=0) # Column-0 mask
In [80]: col1m = (a[:,1]>=-9) & (a[:,1]<=1) # Column-1 mask
In [81]: a[col0m & col1m] # AND of masks and then index into input array
Out[81]:
array([[-10, 0],
[ -9, 1],
[ -7, -5],
[ -7, -6]])
另一种方法-
In [99]: a # Input array
Out[99]:
array([[-10, 0],
[ -9, 1],
[ 9, -5],
[ -8, 6],
[ -7, -5],
[ -7, -6],
[ 0, -10]])
In [100]: a[((a >= [-10, -9]) & (a <=[0, 1])).all(1)]
Out[100]:
array([[-10, 0],
[ -9, 1],
[ -7, -5],
[ -7, -6]])
