在Numpy

时间:2015-09-19 10:40:44

标签: python numpy

给定一个形状为X的阵列X(100,8192),我想为100个外部维度中的每一个复制长度为8192的子阵列10次,以便生成的数组具有形状(100,8192,10)。 / p>

我对tile函数的工作原理感到困惑,我只能复制一个1d数组(虽然可能不是很优雅),例如如果我给了一个1d的形状数组(8192,),我可以通过像这样复制1d数组来创建一个二维数组:np.tile(x,(10,1)).transpose(),但是一旦我尝试在二维数组上执行此操作,我就没有想一想当你提供一个值元组时,tile函数实际上在做什么,文档有点不清楚。

有人能告诉我怎么做吗?

编辑:示例,给定2d数组:

In [229]: x
Out[229]: 
array([[1, 2, 3],
       [4, 5, 6]])

我希望通过在这种情况下复制3次列,以下数组:

In [233]: y
Out[233]: 
array([[[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]],

       [[4, 4, 4],
        [5, 5, 5],
        [6, 6, 6]]])

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用np.repeat,例如:

设X为形状数组(100,8192),要在列维度上复制8192维度的子阵列10次,请执行以下操作:

X_new = np.repeat(X,10).reshape(100,8192,10)

答案 1 :(得分:1)

你真的要求一个形状(100,8192,10)?通过阅读你,我会想到像(100,10,8192)这样的东西?你能提供一个例子吗?如果你真的要求(100,10,8192),也许你想要:

np.tile(x,10).reshape((100,10,8192))

这是你要求的吗?

相关问题