反复堆叠Numpy Arrays

时间:2013-05-17 15:59:53

标签: arrays numpy stack repeat

这可能是一个简单的问题,但我正试图得到答案;) 我想创建一个3D numpy数组,它是另一个子数组的重复副本,具有给定数量的copys。

在1-D中,这就是我想做的事:a = [0,1,0],因子= 3导致b = [0,1,0,0,1,0,0,1,0]

到目前为止我的想法:

- 创建更大的数组并将子数组切入其中(是否有可能在切片内以某种方式进行切片?)。

- 建立一个列表并使用hstack,vstack和dstack。

for i in range(factor):
    array_list.append(data)
data=np.hstack(array_list)
for i in range(factor):
    array_list.append(data)
data=np.vstack(array_list)
for i in range(factor):
    array_list.append(data)

这可行,但似乎不是一个好的和可读的解决方案,甚至相当大的内存,因为列表必须在每个堆叠过程后重新创建。对我来说,3D案例很有意思,但对于讨论来说,即使在更高的维度上也能使这项工作变得有趣。

2 个答案:

答案 0 :(得分:2)

您可能想看看np.tile

http://docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html

对于简单的1d示例:

In [1]: a=[0,1,0]
In [3]: np.tile(a,3)
Out[3]: array([0, 1, 0, 0, 1, 0, 0, 1, 0])

答案 1 :(得分:0)

尝试以下方法:

import numpy as np

a = np.random.random((2,2))
b = np.dstack((a,a))

for i in range(1):
    b = np.dstack((b,a))