如何用从Python中另一个矩阵获取的索引填充矩阵的元素

时间:2019-01-02 18:03:16

标签: python numpy matrix indexing

我有以下代码,该代码构造了两个矩阵a(零的3 * 2矩阵)和b。我想根据存储在索引0中的索引位置,用a替换矩阵1中的b。我想要没有for循环。

import numpy as np

a = np.zeros((3, 2))
b = np.array([0, 1, 0])

输出应为

c = [[1, 0],
     [0, 1],
     [1, 0]]

1 个答案:

答案 0 :(得分:3)

Numpy花式索引在这里是您的朋友。为了使b作为列索引,您需要一个与b相等大小的数组,该数组将告诉您每个索引适用的行:

a[np.arange(b.size), b] = 1

这会就地修改a。如果那不是您想要的,请首先进行复制:

c = a.copy()
c[np.arange(b.size), b] = 1