今天新见到了一种索引表示法:
- matrix[x,y]=z
由于遍寻度娘而查询未果,我就自己理解了一下,若有朋友能之处错误之处,我将不胜感激。
先举个栗子:
A
matrix([[ 0, 2, 6, 4],
[100, 0, 3, 100],
[ 7, 100, 0, 1],
[ 5, 100, 12, 0]])
B
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
对于矩阵A,若输入
A[0][1]
则会返回错误信息:
IndexError: index 1 is out of bounds for axis 0 with size 1
这是什么意思呢?我们可以通过下面的命令行理解:
>A[0]
matrix([[0, 2, 6, 4]])
>A[1]
matrix([[100, 0, 3, 100]])
由此可以发现,矩阵A[n]表示A的第n个矩阵,说明A是一个矩阵的集合,上述A中包含了4个矩阵:[0,2,6,4];[100,0,3,100];[7,100,0,1];[5,100,12,0] 。皆为4*1矩阵,所以报错信息的意思为“第0个矩阵只有1列,最大索引为0,1超出索引范围了”
所以正确表示为
> A[0][0]
当然,这和A[0]等价。。
若要表示其中某一元素,应为
>A[2,3]
1
而array索引表示法很简单,对于上述数组B
>B[1,1]=2
>B[1][2]=3
>print(B)
输出为
B
array([[0., 0., 0., 0.],
[0., 2., 3., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
即array[n,n]等价于array[n][n],可用修改后的数组B进行验证:
>>>B[1,1]==B[1][1]
>True
总结完毕,期待指正。