Atribuir a uma grade de uma matriz NumPy dados os índices de linha e coluna

Eu quero acessar uma restrição específica de linha e coluna de uma matriz numpy 2D.

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

Se eu fizer o que parece natural, apenas obtenho os elementos diagonais da matriz restrita.

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

Em vez disso, posso fazer isso para ler o que quero -

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

..mas não me deixa escrever / atribuir os valores.

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

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

Como posso escrever para uma matriz aqui?

questionAnswers(2)

yourAnswerToTheQuestion