5

私が使用した主対角線を置き換えるためにnp.fill_diagonal

matrix = np.zeros((4, 4), float)
main = np.array([2,2,2,2])
np.fill_diagonal(matrix, main)

ただし、主対角線の隣にある上下の対角線も置き換える必要があります。

upper=np.array([1,1,1])
lower=np.array([7,7,7])

取得するため:

matrix=[[2 1 0 0]
        [7 2 1 0]
        [0 7 2 1]
        [0 0 7 2]]

ありがとうございました

4

1 に答える 1

10

スマートスライスを使用すると、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.]])
于 2012-05-26T16:46:51.647 に答える