用逻辑运算符索引numpy数组

glu*_*uke 3 python arrays indexing numpy

我有一个二维的numpy数组,例如:

import numpy as np
a1 = np.zeros( (500,2) )

a1[:,0]=np.arange(0,500)
a1[:,1]=np.arange(0.5,1000,2)
# could be also read from txt
Run Code Online (Sandbox Code Playgroud)

那么我想选择与符合条件(例如范围(l1,l2)中包含的所有值a1 [:,1])的切片相对应的索引:

l1=20.0; l2=900.0; #as example
Run Code Online (Sandbox Code Playgroud)

我想用一个简洁的表达来做。但是,两个都没有:

np.where(a1[:,1]>l1 and a1[:,1]<l2)
Run Code Online (Sandbox Code Playgroud)

(它给出ValueError,并建议使用np.all,在这种情况下我不清楚);都不:

np.intersect1d(np.where(a1[:,1]>l1),np.where(a1[:,1]<l2))
Run Code Online (Sandbox Code Playgroud)

正在工作(它给出了不可散列的类型:“ numpy.ndarray”)

然后,我的想法是使用这些索引来映射另一个大小为(500,n)的数组。

有任何合理的方式选择索引吗?或者:在这种情况下是否需要使用口罩?

YXD*_*YXD 5

这应该工作

np.where((a1[:,1]>l1) & (a1[:,1]<l2))
Run Code Online (Sandbox Code Playgroud)

要么

np.where(np.logical_and(a1[:,1]>l1, a1[:,1]<l2))
Run Code Online (Sandbox Code Playgroud)