在python中向3d数组添加元素

时间:2014-12-21 03:42:52

标签: python arrays list multidimensional-array

我是Python的新手,我正在尝试将元素添加到3D列表中。

def getHoughSpace(self):
        space = [[[]]]
        for i in range(0, len(self.xs)):
            rho = self.getRho(self.xs[i], self.ys[i], self.zs[i])
            space.append([Cell(rho, 0)])
            for j in range(0, len(self.ys)):
                theta = self.getTheta(self.xs[j], self.ys[j], self.zs[j])
                space[i].append([Cell(theta, 0)])
                for k in range(0, len(self.zs)):
                    phi = self.getPhi(self.xs[k], self.ys[k])
                    space[i][j].append([Cell(phi, 0)]) # error happens here

但是,当i=1j=0k=0时,我的程序崩溃并出现错误:

AttributeError: Cell instance has no attribute 'append'

为什么会这样?我如何通过i=0j=0k=0但不能在i=1时通过?显然,我正在space[i][j]访问一个小组,但我想访问Cells列表。

  • 一个有趣的说明是,如果我注释掉错误行,它就会运行。那么为什么问题只发生在第三维?

1 个答案:

答案 0 :(得分:1)

对于三维列表,您可能希望在末尾附加元素:

space = []
space.append([])
space[i].append([])
space[i][j].append(<element>)

或者您可以使用numpy

import numpy as np
space = np.empty((len(self.xs), len(self.ys), len(self.zs)), dtype=object)