给定一个形状为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]]])
答案 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))
这是你要求的吗?