numpy:沿新轴扩展数组?

26 投票
5 回答
14635 浏览
提问于 2025-04-15 19:52

肯定有办法做到这一点……我就是搞不明白。

我有一个(9,4)的数组,我想在第三个轴上重复它4096次……这样它就变成(9,4,4096),每个来自9,4数组的值在新轴上简单地重复4096次。

如果我这个不太靠谱的3D图示能让你明白的话(对角线是z轴)

4|   /off to 4096
3|  /
2| /
1|/_ _ _ _ _ _ _ _ _ 
   1 2 3 4 5 6 7 8 9

谢谢

补充说明:这里强调的是(9,4)的数组要为新轴的每一个4096个“行”重复。想象一下一个横截面——每个原始的(9,4)数组就是那个4096长的长方体中的一个。

5 个回答

7

这个问题虽然很老了,但我还是提供一个新的选择:

import numpy as np
X = np.random.rand(9,4)
Y = np.dstack([X] * 4096)
11

你还可以利用广播规则来填充一个调整大小后的数组:

import numpy
X = numpy.random.rand(9,4)
Y = numpy.resize(X,(4096,9,4))

如果你不喜欢这种顺序的轴,你可以进行转置:

Z = Y.transpose(1,2,0)
25

这里有一种方法:

import scipy
X = scipy.rand(9,4,1)
Y = X.repeat(4096,2)

如果给你的X只有(9,4)这个值,那么

import scipy
X = scipy.rand(9,4)
Y = X.reshape(9,4,1).repeat(4096,2)

撰写回答