首页 > 解决方案 > Numpy:使用花式索引在 2d 中插入 2 x 1d 的值

问题描述

我想在给定具有行/列索引的数组的情况下进行索引。我有一个从argmax函数中提取的带有列号(列索引)的数组,

有了这个,我想将一个零二维矩阵转换为 1(或 True),因为索引对应于该列索引。行从 0 到 4

以下是我的试验以及我如何看待问题。

matrix1 = np.zeros((5, 10))
matrix2 = np.zeros((5, 10))
matrix3 = np.zeros((5, 10))
matrix4 = np.zeros((5, 10))
matrix5 = np.zeros((5, 10))

row = np.array([0,1,2,3,4])
column = np.array([9,9,2,3,9,2,1,3,3,1])

matrix1[row, column] = 1
matrix2[[row, column]] = 1
matrix3[[row], [column]] = 1
matrix4[[[row], [column]]] = 1
matrix5[([row], [column])] = 1

我怎样才能让它按预期工作?

编辑: 除了上述情况外,还存在每行只需要 1(一个)值的情况。

标签: pythonarraysnumpymatrixindexing

解决方案


这听起来有点幼稚,但直觉上,我会首先找到所有可能的索引组合。

matrix1 = np.zeros((5, 10))
row = np.array([0,1,2,3,4])
column = np.array([9,9,2,3,9,2,1,3,3,1])

index = np.stack(np.meshgrid(row,column), -1).reshape(-1,2) 
matrix1[index[:,0], index[:,1]] = 1

希望这可以帮助。


推荐阅读