Python:创建多维零数组的多维数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:创建多维零数组的多维数组相关的知识,希望对你有一定的参考价值。
您好我有以下问题。我创建了零维数组(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数组。
答案
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)
以上是关于Python:创建多维零数组的多维数组的主要内容,如果未能解决你的问题,请参考以下文章