如何根据随机索引数组将向量中的元素插入到矩阵中

基本上,我试图根据随机索引将向量中的元素插入到矩阵中


size = 100000

answer_count = 4

num_range = int(1e4)


a = torch.randint(-num_range, num_range, size=(size, ))

b = torch.randint(-num_range, num_range, size=(size, ))

answers = torch.randint(-num_range, num_range, size=(size, answer_count))


for i in range(size): answers[i, np.random.randint(answer_count)] = a[i] + b[i]

我试过类似的东西


c = a + b

pos = torch.randint(answer_count, size=(size, ))

answers[:, pos] = c

但我肯定做错了什么


湖上湖
浏览 69回答 1
1回答

一只名叫tom的猫

我认为您需要像这样更改最后一行:answers[np.arange(size), pos] = c问题在于高级索引的不正确使用。要了解这些索引的区别,请尝试打印出answers[:, pos]vs. answers[np.arange(size), pos],您会明白为什么前一个不起作用。用一行answers[np.arange(size), pos]选择每一行,同时用每一行选择所有行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python