我有一个2D numpy数组,我希望选择在给定列中具有特定值的行。这很简单,可以使用单个数字或多个数字,但我无法为列表执行此操作。代码如下,我已经开始工作了,我尝试使用列表:
matrix = np.ndarray([4, 5])
matrix[0,:] = range(1,6)
matrix[1,:] = range(6,11)
matrix[2,:] = range(11,16)
matrix[3,:] = range(16,21)
li=[9,19]
matrix2=matrix[matrix[:,3]==9] # this gives me one of the requirements.
print(matrix2)
matrix3=matrix[(matrix[:,3]==9) | (matrix[:,3]==19)] # Multiple requirements explicitly laid out works.
print(matrix3)
matrix4=matrix[matrix[:,3] in li] # multiple requirements in list form do not work.
print(matrix4)
我也看过使用Conditional indexing with Numpy ndarray中建议的np.where()命令,但是这似乎对我没有帮助,当使用它而不是我上面使用的切片时它似乎也没有改变结果。
我得到的具体错误信息是:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
但我不明白a.any()或a.all()命令将如何帮助我。
使用np.isin
(docs here)
matrix4=matrix[np.isin(matrix[:,3], li)]