如何在Python中向三维数组添加元素
我想在Python中存储一个三维数组,也就是像 x[0][0][0]
这样的结构。我该怎么初始化 x
,并给它添加值呢?我试过这样做:
x=[]
x[0][0][0]=value1
x[0][0].append(value1)
但是这两行代码都报了越界错误。那我该怎么做呢?我想要的效果是: x[0][0][0]=value1
, x[1][0][0]=value2
, x[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]]]
)。