numpy:沿新轴延伸数组?

时间:2010-03-01 17:24:15

标签: python arrays numpy

当然必须有办法做到这一点......我无法解决这个问题。

我有一个(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长长方体中的一个。

5 个答案:

答案 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