Это тоже работает:

у получить доступ к определенному ограничению строк и столбцов двумерного массива.

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

Если я делаю то, что кажется естественным, я просто получаю диагональные элементы ограниченного массива.

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

Вместо этого я могу сделать это, чтобы прочитать то, что я хочу -

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

..но это не позволяет мне писать / присваивать значения.

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

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

Как я могу написать в матрицу здесь?

Ответы на вопрос(2)

Это тоже работает:

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

использованиеnp.ix_ отобразить эту сетку элементов, а затем назначить -

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

Ваш ответ на вопрос