Pythonic构建一个numpy数组的方法,而不必明确地处理第一个赋值?

时间:2017-06-22 15:15:36

标签: python numpy

我发现自己经常遇到这种编码模式:

matrices = np.random.rand(10, 10, 10)
block = np.array([])
for idx, M in enumerate(matrices):
    print(M.shape)
    if idx == 0:
        block = M
    else:
        block = np.dstack((block, M))

这只是一个例子,我知道在这种情况下我可以做block = matrices。有没有更好的方法来做到这一点,而无需处理

if idx == 0:
    block = M

情况?

1 个答案:

答案 0 :(得分:0)

不要使用dstack(或任何连接variantes)累积数组 - 使用list append

block = []
for idx, M in enumerate(matrices):
    block.append(M)

然后在

之后“堆叠”它们
block = np.dstack(block)   # concatenate(block, axis=2)

这样更快,并避免了这种初始化的尴尬。