这是使用numpy。这里有趣的是接近需要的东西;更新子矩阵视图d可以更新在背衬基质:如何制定一个numpy子矩阵视图数组d作为1D矩阵而不是2D
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所述背衬阵列中,正如我所希望的。
确定这里是蹭 - 现在如果需要,而不是一个二维,而是一个一维矩阵视图数组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子矩阵视图的1D定义为完美精细公式 (如果存在这种情况)。
工程很好。完美解决方案感谢您的帮助!我的下一个研究领域是否是numpy.flatiter继续操作,就好像它是向量数学表达式中的真正的一维数组一样。 – 2012-08-13 11:21:46