Skip to main content
 首页 » 编程设计

python之选择二维 NumPy 数组中每列特定范围内的元素

2025年05月04日25yxwkf

我有一个 2D NumPy包含如下元素的数组:

[[-10,  0] 
 [-9,   1] 
 [ 9,  -5] 
 [-8,   6] 
 [-7,  -5] 
 [-7,  -6] 
 [ 0, -10]] 

我想存储仅那些元素:

  1. 第一列的值在范围内:-10 <= x <= 0

和

  1. 第二列的值在范围内:-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]])