在给定行和列索引的情况下,将NumPy数组分配到网格中

时间:2017-09-05 20:43:03

标签: python arrays numpy

我想访问2d numpy数组的特定行和列限制。

> 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 个答案:

答案 0 :(得分:2)

使用np.ix_映射该元素网格,然后分配 -

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

答案 1 :(得分:0)

这也有效:

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