为索引数组中的每个元素选择ndarray元素

时间:2018-01-23 16:08:28

标签: python numpy

我很确定这已经被问过了,它与numpy.choose有关,但我无法弄清楚它是如何完成的。请考虑以下事项:

N_t = 1000
N_d = 10

X = np.random.random([N_d,N_d,N_t])

jumps = np.random.randint(N_d,size = N_t)
jumps[0] = 0

f = [X[jumps[t],jumps[t-1],t] for t in range(1,N_t)]

构建f是否存在“笨拙”? (旁注: X 是某种转移矩阵,是d-dim状态空间中某些跳跃轨迹的索引。

1 个答案:

答案 0 :(得分:1)

是。它被称为advanced indexing;您可以通过将每个维度的索引构造为整数数组来完成此操作:

X[jumps[1:], jumps[:-1], np.arange(1,N_t)]
np.equal(X[jumps[1:],jumps[:-1],np.arange(1,N_t)], f).all()
# True