具有2d索引数组的{Numpy数组的第n维索引

时间:2015-06-23 18:12:20

标签: python arrays numpy matrix-indexing

我有以下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,:]

0 个答案:

没有答案