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

时间:2018-03-01 13:22:56

标签: python numpy scipy

您好我有以下问题。我创建了零维数组(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数组。

1 个答案:

答案 0 :(得分: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)