如何基于随机索引数组将向量中的元素插入矩阵

问题描述

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

size = 100000
answer_count = 4
num_range = int(1e4)

a = torch.randint(-num_range,num_range,size=(size,))
b = torch.randint(-num_range,))
answers = torch.randint(-num_range,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,))
answers[:,pos] = c

但是我肯定做错了

解决方法

我认为您需要像这样更改最后一行:

answers[np.arange(size),pos] = c

问题在于高级索引的使用不正确。要了解这些索引的区别,请尝试将answers[:,pos]answers[np.arange(size),pos]进行打印,您将了解为什么前一个索引不起作用。 answers[np.arange(size),pos]单行选择每个pos,而answers[:,pos]选择每个pos ALL行numpy doc here中有关高级索引的更多信息。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...