Python:创建多维零数组的多维数组

问题描述 投票:0回答:1

您好我有以下问题。我创建了零维数组(40,30,80)。现在我需要一个数组中7 * 7 * 7的这些零数组。我怎样才能做到这一点?我的一个矩阵是这样创建的:

import numpy as np
zeroMatrix = np.zeros((40,30,80))

我的第一种方法是将零矩阵放在7 * 7 * 7列表中。但我想把它全部放在一个numpy数组中。我知道我认为结构化阵列有一种方法,但我不知道如何。如果我用np.copy()复制我的7 * 7 * 7列表,它会创建一个具有给定形状的numpy数组,但必须有一种方法可以立即执行此操作,不是吗?

编辑

也许我必须让我的问题更清楚。我有一个7 * 7的零矩阵列表。在for循环中,将修改所有数组。在另一个步骤中,这个临时列表被附加到一个空列表中,该列表最后的长度为7(所以我将7 * 7列表附加到空列表中7次。最后我有一个7 * 7 * 7那些矩阵的列表。但我认为这会更好如果我从一开始就有这些零矩阵的numpy数组。

python numpy scipy
1个回答
2
投票

numpy不支持构建相同形状的数组,而numpy更喜欢创建最小深度元素的最大深度数组。

事实证明,numpy.frompyfunc在规避这种不受欢迎的趋势方面非常有用。

在您的具体情况下,可以做到:

result = np.frompyfunc(zeroMatrix.copy, 0, 1)(np.empty((7, 7, 7), object))

确实:

>>> result.shape
(7, 7, 7)
>>> result.dtype
dtype('O')
>>> result[0, 0, 0].shape
(40, 30, 80)
© www.soinside.com 2019 - 2024. All rights reserved.