У меня есть массив 2D numpy. Я хотел бы изменить его, создав массив его диагональных элементов и изменив диагональный массив, чтобы эти изменения отражались на исходном 2D-массиве.
Я пробовал с:
>>> a = np.ones(shape=(3,3))
>>> d1 = a[np.diag_indices_from(a)]
>>> d1
array([1., 1., 1.])
>>> d1[0] = 2
>>> d1
array([2., 1., 1.])
>>>a
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
Видно, что изменения не влияют на исходный массив.
Есть ли способ создать диагональный массив, который также повлияет на исходный 2D-массив?
РЕДАКТИРОВАТЬ: Я получаю эффект Ищу, когда работаю со строками или столбцами:
>>> row0 = a[0]
>>> row0[0] = 0
>>> a
array([[0., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
>>> column0=a[:,0]
>>> column0[2]=3
>>> a
array([[0., 1., 1.],
[1., 1., 1.],
[3., 1., 1.]])