python生成多维矩阵
错误的生成方法
先展示一个错误的方法:
a = [[['unknown', 0.0, 0]] * 2] * 6
生成:
[[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]]]
当我们修改其中一项时:
a[0][0] = 5
生成:
[[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]]]
可以看到,a[n][0]全部都被改变了
这种方法只适用于一维数组:
a[0] = [8, 8, 8]
生成:
[[8, 8, 8],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]],
[5, [‘unknown’, 0.0, 0]]]
可以看到修改最高维项时,没有改变其他数值
正确的生成方法
一
此方法也可以结合Pandas生成DateFrame
d = [[['unknown', 0.0, 0] for _ in range(2)] for _ in range(2)]
生成:
[[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]]]
修改:
d[0][0][0] = 'known'
生成:
[[[‘known’, 0.0, 0], [‘unknown’, 0.0, 0]],
[[‘unknown’, 0.0, 0], [‘unknown’, 0.0, 0]]]
可以看到没有修改其他项
二
当数据类型相同时,可以使用numpy
b = np.zeros((2, 2, 2))
print(b)
生成:
[[[0. 0.]
[0. 0.]]
[[0. 0.]
[0. 0.]]]
修改:
b[0][0][0] = 6
生成:
[[[6. 0.]
[0. 0.]]
[[0. 0.]
[0. 0.]]]
可以看到也没有修改其他项