lok*_*esh 9 python arrays multidimensional-array
我试图将数据存储在三维数组中,即x[0][0][0]在Python中.如何初始化x并为其添加值?我试过这个:
x=[]
x[0][0][0]=value1
x[0][0].append(value1)
Run Code Online (Sandbox Code Playgroud)
这两行都超出了范围错误.怎么做?我想它想: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
Run Code Online (Sandbox Code Playgroud)
等等
ama*_*rea 22
我建议numpy用于多维数组.它使它更方便,更快捷.这看起来像:
import numpy as np
x = np.zeros((10,20,30)) # Make a 10 by 20 by 30 array
x[0,0,0] = value1
Run Code Online (Sandbox Code Playgroud)
但是,如果您不想使用numpy或需要非矩形多维数组,则需要将其视为列表列表,并初始化每个列表:
x = []
x.append([])
x[0].append([])
x[0][0].append(value1)
Run Code Online (Sandbox Code Playgroud)
编辑:或者您可以使用ndpu的answer(x = [[[value1]]])中显示的紧凑表示法.
如果要创建一些3D稀疏数组,可以将所有数据保存在dict中:
x={}
x[0,0,0] = 11
x[1,0,0] = 21
x[0,1,1] = 111
Run Code Online (Sandbox Code Playgroud)
要么:
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
Run Code Online (Sandbox Code Playgroud)