use*_*224 4 python arrays numpy
要替换我使用的主对角线np.fill_diagonal
:
matrix = np.zeros((4, 4), float)
main = np.array([2,2,2,2])
np.fill_diagonal(matrix, main)
Run Code Online (Sandbox Code Playgroud)
但我还需要更换主对角线旁边的上下对角线:
upper=np.array([1,1,1])
lower=np.array([7,7,7])
Run Code Online (Sandbox Code Playgroud)
要得到:
matrix=[[2 1 0 0]
[7 2 1 0]
[0 7 2 1]
[0 0 7 2]]
Run Code Online (Sandbox Code Playgroud)
谢谢
通过一些智能切片,np.fill_diagonal
也可以这样做:
>>> np.fill_diagonal(matrix[:-1, 1:], upper)
>>> np.fill_diagonal(matrix[1:, :-1], lower)
>>> matrix
array([[ 2., 1., 0., 0.],
[ 7., 2., 1., 0.],
[ 0., 7., 2., 1.],
[ 0., 0., 7., 2.]])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
694 次 |
最近记录: |