我很确定这已经被问过了,它与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状态空间中某些跳跃轨迹的索引。
答案 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