当然必须有办法做到这一点......我无法解决这个问题。
我有一个(9,4)阵列,我想沿着第3轴重复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长长方体中的一个。
答案 0 :(得分:24)
这是一种方式:
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)
答案 1 :(得分:9)
您还可以依赖广播规则重复填充重新调整大小的数组:
import numpy
X = numpy.random.rand(9,4)
Y = numpy.resize(X,(4096,9,4))
如果您不喜欢以这种方式订购的轴,则可以转置:
Z = Y.transpose(1,2,0)
答案 2 :(得分:6)
问题是超级旧的,但无论如何这是另一种选择:
import numpy as np
X = np.random.rand(9,4)
Y = np.dstack([X] * 4096)
答案 3 :(得分:2)
使用numpy.tile的简单numpy解决方案
localhost:9000
答案 4 :(得分:0)
我认为有一个内置的numpy函数,称为np.full。
a=np.zeros((9,4))
np.full((4096,9,4),a)
文档https://numpy.org/doc/stable/reference/generated/numpy.full.html