我有一个多维数组,比如形状(4,3),看起来像
a = np.array([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
如果我有固定条件列表
conditions = [True, False, False, True]
如何返回列表
array([(1,2,3),(10,11,12)])
使用np.extract
返回
>>> np.extract(conditions, a)
array([1, 4])
只返回每个嵌套数组的第一个元素,而不是数组本身。我不确定是否或如何使用np.where
执行此操作。非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
让我们定义变量:
>>> import numpy as np
>>> a = np.array([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
>>> conditions = [True, False, False, True]
现在,让我们选择您想要的元素:
>>> a[np.array(conditions)]
array([[ 1, 2, 3],
[10, 11, 12]])
请注意,较简单的a[conditions]
有一些歧义:
>>> a[conditions]
-c:1: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index
array([[4, 5, 6],
[1, 2, 3],
[1, 2, 3],
[4, 5, 6]])
正如您所看到的,conditions
在这里被视为(整数)索引值,这不是我们想要的。
答案 1 :(得分:1)
你可以使用简单的列表切片和np.where
它或多或少是专门针对这种情况制作的。
>>> a[np.where(conditions)]
array([[[ 1, 2, 3],
[10, 11, 12]]])