用另一个2d数组索引一个2d数组



我有一个数组lines = np.array[[0,0],[0,1],[1,0],[1,2],[2,0],[2,1],[2,3],[3,1],[3,3],[0,1],[1,2],[4,4]]和另一个numpy零数组vectors = [[0. 0. 0. 0. 0.],[0. 0. 0. 0. 0.],[0. 0. 0. 0. 0.],[0. 0. 0. 0. 0.],[0. 0. 0. 0. 0.]]我想使用第一个数组(行)中的元素来插入"1' "到第二个数组(向量)

所以我想要的输出是:

vectors = 
[[1. 1. 1. 0. 0.],
[1. 0. 1. 1. 0.],
[0. 1. 0. 0. 0.],
[0. 0. 1. 1. 0.],
[0. 0. 0. 0. 1.]]

注意:考虑到在lines数组中,所有的第二个数字都用于索引向量数组中的特定数组,而第一个数字是放置"1"的位置。例如,行[2]=[1,0],行[2][1]= 0,行[2][0]= 1,所以你将使用0来索引到向量数组中的第0个数组,并放置一个&;1&;;在第一个位置(索引1)。

抱歉,如果我解释得不好,我是新的python和StackOverflow。

使用说明:vectors[lines[:, 1], lines[:, 0]] = 1

解释:lines[:, n]对二维线数组的第n列进行索引。因此,根据您的规范,lines[:, 1](第一列)包含vectors数组的行号。然后我们使用lines[:, 0](即第0列中的值)替换vectors数组中的相应列。