numpy:沿新轴扩展数组?
肯定有办法做到这一点……我就是搞不明白。
我有一个(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)