如果您有一个布尔数组,您可以根据它进行直接选择,如下所示:
>>> a = np.array([True, True, True, False, False])
>>> b = np.array([1,2,3,4,5])
>>> b[a]
array([1, 2, 3])
要配合您的初始示例,您可以执行以下操作:
>>> a = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> b = np.array([[False,True,False],[True,False,False],[False,False,True]])
>>> a[b]
array([2, 4, 9])
您还可以添加arange
并对其进行直接选择,但这取决于您生成布尔数组的方式以及代码的样子 YMMV。
>>> a = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> a[np.arange(len(a)), [1,0,2]]
array([2, 4, 9])