Asignar a una cuadrícula de una matriz NumPy dados los índices de fila y columna

Quiero acceder a una restricción específica de fila y columna de una matriz numpy 2d.

> x
array([[1, 2, 0],
       [3, 4, 0],
       [0, 0, 1]])

Si hago lo que parece natural, solo obtengo los elementos diagonales de la matriz restringida.

> x[[0,1], [0,1]]
array([1, 4])

En cambio, puedo hacer esto para leer lo que quiero:

> x[[0,1],:][:,[0,1]]
array([[1, 2],
       [3, 4]])

... pero no me deja escribir / asignar los valores.

> x[[0,1],:][:,[0,1]] = np.array([[1,0],[0,1]])

> x 
array([[1, 2, 0],
       [3, 4, 0],
       [0, 0, 1]])

¿Cómo puedo escribir en una matriz aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta