繁体   English   中英

用另一个二维数组索引一个二维数组

[英]Indexing a 2d array with another 2d array

我有一个数组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.]] 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.]] 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”插入到第二个数组(向量)中。

所以我想要的 output 将是:

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.]]

注意:考虑到行数组中的所有第二个数字都用于索引向量数组中的特定数组,第一个数字是放置“1”的位置。 例如,lines[2] = [1,0]、lines[2][1] = 0 和 lines[2][0] = 1,因此您将使用 0 索引向量数组中的第 0 个数组并放置第一个位置的“1”(索引 1)。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM