用 Python 中的另一个数组替换对角线元素

Replacing diagonal elements with another array in Python

我有两个矩阵,AP。我想用 P 的元素替换 A 的对角线元素。附上所需的输出。

A=np.array([[0, 1, 1, 0],
       [1, 0, 0, 1],
       [1, 0, 0, 1],
       [0, 1, 1, 0]])

P=np.array([[3, 4],
       [5, 6]])

期望的输出:

array([[3, 1, 1, 0],
       [1, 4, 0, 1],
       [1, 0, 5, 1],
       [0, 1, 1, 6]])

使用 fill_diagonal 和扁平 P 作为对角线的值:

np.fill_diagonal(A, P.ravel())

注意。操作到位

输出:

array([[3, 1, 1, 0],
       [1, 4, 0, 1],
       [1, 0, 5, 1],
       [0, 1, 1, 6]])