Python numpy:沿新轴扩展阵列?

Python numpy:沿新轴扩展阵列?,python,arrays,numpy,Python,Arrays,Numpy,肯定有办法做到这一点。。。我想不出来 我有一个(9,4)数组,我想沿着第三轴重复4096次。。。因此它变得简单(9,44096),来自9,4数组的每个值沿着新轴简单地重复4096次 如果我可疑的3D图有意义(对角线是z轴) 干杯 编辑:只是为了澄清一下,这里的重点是(9,4)数组对于新轴的4096行中的每一行都是重复的。想象一个横截面——每个原始(9,4)阵列都是4096长长方体下的一个阵列。这里有一种方法: import scipy X = scipy.rand(9,4,1) Y = X.re

肯定有办法做到这一点。。。我想不出来

我有一个(9,4)数组,我想沿着第三轴重复4096次。。。因此它变得简单(9,44096),来自9,4数组的每个值沿着新轴简单地重复4096次

如果我可疑的3D图有意义(对角线是z轴)

干杯

编辑:只是为了澄清一下,这里的重点是(9,4)数组对于新轴的4096行中的每一行都是重复的。想象一个横截面——每个原始(9,4)阵列都是4096长长方体下的一个阵列。

这里有一种方法:

import scipy
X = scipy.rand(9,4,1)
Y = X.repeat(4096,2)
如果
X
仅作为(9,4)提供给您,则


您还可以根据广播规则重复填充重新调整大小的阵列:

import numpy
X = numpy.random.rand(9,4)
Y = numpy.resize(X,(4096,9,4))
如果您不喜欢以这种方式排列轴,则可以转置:

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

这个问题太老了,但还是有另一个选择:

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

一个简单的numpy解决方案是使用numpy.tile

import numpy as np
a = np.random.rand(9, 4)
b = np.tile(a, (4096, 1, 1))

我认为有一个内置的numpy函数叫做np.full

a=np.zeros((9,4))
np.full((4096,9,4),a) 

这里的文档

再次感谢Steve,他感到困惑,因为我没有意识到在使用重复方法之前必须重新塑造阵列-它一直告诉我我试图使用未定义的轴。不过现在有意义了。
np.瓷砖
是另一种选择。请参阅的答案。您还绘制了4×9矩阵的图表。:)您只需执行
[X]*4096
即可,而不是
[X代表范围(4096)中的i]
import numpy as np
a = np.random.rand(9, 4)
b = np.tile(a, (4096, 1, 1))
a=np.zeros((9,4))
np.full((4096,9,4),a)