【发布时间】:2020-03-31 22:46:09
【问题描述】:
在 Mathematica 中,我能够用对角线和非对角线值写出所需的矩阵我想知道在 python 中使用 numpy 最好的方法是什么?
【问题讨论】:
标签: arrays numpy for-loop if-statement matrix
在 Mathematica 中,我能够用对角线和非对角线值写出所需的矩阵我想知道在 python 中使用 numpy 最好的方法是什么?
【问题讨论】:
标签: arrays numpy for-loop if-statement matrix
您的代码的虚拟克隆:
In [146]: arr = np.zeros((5,5),int)
In [147]: arr[np.arange(5),np.arange(5)]=2
In [148]: arr[np.arange(4),np.arange(1,5)]=-1
In [149]: arr[np.arange(1,5),np.arange(4)]=-1
In [150]: arr
Out[150]:
array([[ 2, -1, 0, 0, 0],
[-1, 2, -1, 0, 0],
[ 0, -1, 2, -1, 0],
[ 0, 0, -1, 2, -1],
[ 0, 0, 0, -1, 2]])
或使用diag 函数:
In [151]: np.diag(np.ones(5,int)*2,0)+np.diag(np.ones(4,int)*-1,-1)+np.diag(np.ones(4,int)*-1,1
...: )
Out[151]:
array([[ 2, -1, 0, 0, 0],
[-1, 2, -1, 0, 0],
[ 0, -1, 2, -1, 0],
[ 0, 0, -1, 2, -1],
[ 0, 0, 0, -1, 2]])
【讨论】: