如何在Python中向三维数组添加元素

13 投票
7 回答
112059 浏览
提问于 2025-04-17 19:18

我想在Python中存储一个三维数组,也就是像 x[0][0][0] 这样的结构。我该怎么初始化 x,并给它添加值呢?我试过这样做:

x=[]
x[0][0][0]=value1 
x[0][0].append(value1)

但是这两行代码都报了越界错误。那我该怎么做呢?我想要的效果是: x[0][0][0]=value1x[1][0][0]=value2x[0][1][0]=value3 等等。我该如何在Python中实现这个呢?

我想生成这样的数组:

x=[[[11,[111],[112]],[12],[13]],[[21,[211],[212]],[22],[23],[24]],[[31],[32]]]
x[0][0][0] will give 11
x[1][0][0]  21
x[0][0][1] 111

等等。

7 个回答

3

如果你能使用numpy库,你可以这样初始化一个固定大小的数组:

import numpy
x = numpy.zeros((i, j, k))

这里的i、j和k是你需要的数组的尺寸。

然后,你可以使用切片的方式来访问这个数组的内容:

x[0, 0, 0] = value1
x[1, 0, 0] = value2
7

如果你正在创建一个三维稀疏数组,你可以把所有的数据保存在一个字典里:

x={}
x[0,0,0] = 11
x[1,0,0] = 21
x[0,1,1] = 111

或者:

from collections import defaultdict
x = defaultdict(lambda :defaultdict(lambda :defaultdict(int)))

x[0][0][0] = 11
x[1][0][0] = 21
x[0][0][1] = 111
31

我推荐使用numpy来处理多维数组。这样做会方便很多,而且速度也更快。你可以这样写:

import numpy as np
x = np.zeros((10,20,30)) # Make a 10 by 20 by 30 array
x[0,0,0] = value1

不过,如果你不想用numpy,或者需要处理不规则的多维数组,那你就得把它当作一个列表的列表的列表来处理,并且要初始化每一个列表:

x = []
x.append([])
x[0].append([])
x[0][0].append(value1)

补充:或者你可以使用ndpu的回答中提到的简洁写法(x = [[[value1]]])。

撰写回答