这是使用 numpy。这里有一些有趣的东西接近需要的东西;对子矩阵视图 d 的更新可以更新后备矩阵 a:
a = array([[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
print a
array([[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
d = a[1:4,1:4]
print d
array([[0, 1, 0],
[1, 0, 0],
[0, 0, 0]])
d[1,1]=9
print a
array([[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 1, 9, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
太好了,9 出现在支持数组 a 中,正如我所希望的那样。
好的,问题来了——现在如果需要,将一个 numpy 子矩阵视图数组 d 或 d 的某个视图 dd 公式化为一维矩阵而不是二维矩阵,你怎么做?以下无法做到这一点。
dd = d.reshape(9)
print dd
array([0, 1, 0, 1, 9, 0, 0, 0, 0])
dd[7]=7
print dd
array([0, 1, 0, 1, 9, 0, 0, 7, 0])
print a
array([[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 1, 9, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
我曾希望看到 7 出现在支持数组 a 中。请注意,没有要求将 d 子矩阵视图限制为 2D - 如果存在这样的事情,则 d 子矩阵视图的一维定义首先将是一个完美的公式。