切片numpy数组以选择列表中包含值的行。真值价值错误

问题描述 投票:1回答:1

我有一个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()命令将如何帮助我。

python list numpy slice
1个回答
1
投票

使用np.isindocs here

matrix4=matrix[np.isin(matrix[:,3], li)]
© www.soinside.com 2019 - 2024. All rights reserved.