在2D NumPy数组中选择每列特定范围内的元素

时间:2016-12-23 13:27:04

标签: python arrays performance numpy

我有一个2D NumPy数组,其中包含以下元素:

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

我想仅存储 那些符号为

的元素
  1. 第一列的值在以下范围内:-10 <= x <= 0
    1. 第二列的值在以下范围内:-9 <= y <= 1
    2. 选择后的数组应如下所示:

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

3 个答案:

答案 0 :(得分:2)

执行此操作的简单迭代方法是:

app.use(express.static(_dirname+'/public/index.html'))

输出:

app.use(express.static(path.join(__dirname, '..', '..', 'app')))

答案 1 :(得分:2)

这是一种矢量化方法 -

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]])

答案 2 :(得分:1)

另一种方法可能是使用列表理解:

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

[x for x in data if -10 <= x[0] <= 0 and -9 <= x[1] <=1]