我创建了一个列表推导,试图模仿3x3矩阵的Matlab单元格。
kis= [ np.zeros(shape=(3,3)) for t in range(1, 5) ]
这就像Matlab中有5个3x3零矩阵的单元格。我可以访问它们
kis[0]
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
我可以将它们修改为
>>> kis[0][0][1]=2
>>> kis[0]
array([[ 0., 2., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> kis[0][0][1]
2.0
现在有5个元素,比如我想添加第六个元素。
kis.append(np.zeros(shape=(3,3)))
当我尝试访问应该是3x3零的矩阵的第六个单元格时,我有这个错误:
>>> kis[5]
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
kis[5]
IndexError: list index out of range
那么如何在列表中添加更多3x3矩阵?为什么上述方法不起作用?上面的代码在Python 2.7.9中。
答案 0 :(得分:3)
kis= [ np.zeros(shape=(3,3)) for t in range(1, 5) ]
# only 4 things ^^^^
如果您想要5个元素,则需要range(5)
。
答案 1 :(得分:1)
>>> kis= [ np.zeros(shape=(3,3)) for t in range(1, 5) ]
>>> len(kis)
4
所以最后一个索引是3.当你:
>>> kis.append(np.zeros(shape=(3,3)))
>>> len(kis)
5
最后一个指数是4.
所以,kis [5]超出了范围