1

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

在一维中,这就是我想要做的: a=[0,1,0], factor=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 案例很有趣,但对于讨论来说,让它在更高维度上工作可能会很有趣。

4

2 回答 2

2

你可能想看看np.tile

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

对于您的简单一维示例:

In [1]: a=[0,1,0]
In [3]: np.tile(a,3)
Out[3]: array([0, 1, 0, 0, 1, 0, 0, 1, 0])
于 2013-05-17T16:07:33.147 回答
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))
于 2013-05-17T16:20:18.837 回答