我有一行 A = [0 1 2 3 4]
和指数 I = [0 0 1 0 1]
. 我想提取 A
指数化 I
即: [2, 4]
.
我的尝试。
import numpy as np
A = np.array([0, 1, 2, 3, 4])
index = np.array([0, 0, 1, 0, 1])
print(A[index])
结果并不像我想象的那样
[0 0 1 0 1]
请你详细说明如何实现我的目标?
我想你想要的是布尔索引。
A[index.astype(bool)]
# array([2, 4])
一个非numpy的方法来实现这个目标,如果它有用的话 -- 它使用zip来组合每一对元素,如果第二个为真,则返回第一个。
[x[0] for x in zip(a, i) if x[1]]