我有以下代码,它构造了两个矩阵a (3*2个零的矩阵)和b。我想将矩阵a中的0s替换为1s,这取决于存储在索引b中的索引位置。我想在没有for循环的情况下做到这一点。
import numpy as np
a = np.zeros((3, 2))
b = np.array([0, 1, 0])输出应为
c = [[1, 0],
[0, 1],
[1, 0]]发布于 2019-01-03 02:11:24
Numpy奇特索引是你的朋友。要使b作为列索引工作,您需要一个与b大小相同的数组,该数组将告诉您每个索引适用的行:
a[np.arange(b.size), b] = 1这将就地修改a。如果这不是您想要的,请先复制一份:
c = a.copy()
c[np.arange(b.size), b] = 1https://stackoverflow.com/questions/54011070
复制相似问题