【发布时间】:2020-12-15 02:43:00
【问题描述】:
我正在尝试将值分配给矩阵的多个对角线。例如,我有这个矩阵:
>>> u = np.zeros(25).reshape(5, 5)
>>> u
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
我想给上面的$k$-ith 对角线赋值。例如,如果 $k=1$,我希望对角线在主对角线上方。我试图通过使用np.diag 来完成此操作,例如np.diag(u, k=1) = 1,我希望得到以下结果:
>>> u
array([[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0.]])
问题是这给了我一个SyntaxError: can't assign to function call,因为这又是Python。但是np.diag 返回一个对原始矩阵的引用,如您所见:
>>> np.may_share_memory(np.diag(u, k=1), u)
True
我该怎么做?提前谢谢你。
【问题讨论】:
-
不管它返回什么,python 都不允许你分配给调用。那只是基本的python。
标签: python numpy numpy-ndarray diagonal