我有以下2-D Numpy数组:
X # X.shape = (11688, 144)
Y # Y.shape = (2912, 1000)
第一个数组填充了大气数据,第二个数组填充了从0到X.shape[0]-1
的随机索引值。我想用X
的每一列为Y
的行编制索引,以产生一个3-D数组result
,其中result.shape = (2912, 1000, 144)
,我希望在没有循环的情况下执行此操作。
我目前的做法是:
result = X[Y,:]
但这一行代码执行时间可能超过10秒,具体取决于Y
的第0轴的形状。
是否有更优化的方法来执行此类索引以加快执行速度?
编辑:这是我想要完成的更完整的例子。X = np.random.rand(11688, 144) # Time-by-longitude array of atmospheric data
t = np.arange(X.shape[0]) # Time vector
# Populate array of randomly drawn time steps
Y = np.zeros((2912, 1000), dtype='i')
for i in xrange(1000):
Y[:,i] = np.random.choice(t, 2912)
# Index X with each column of Y
result = X[Y,:]