我想为每行指定特定的列号,如下所示。 d
是(embedding_id x n_vocab)
之类的数据,t
是正确的embedding_id列表。
然后,我可以像下面一样创建result
。数据很好,但我认为这不聪明。如何以其他智能方式创建result
?
t = np.random.randint(10, size=(32,))
d = np.random.randn(30, 32)
result = []
for a,b in zip(d.transpose(), t):
print(a[b])
result.append(a[b]) # I don't think this is good way
result = np.array(result).astype(float)
print(result)
print(result.shape) # (32,).
答案 0 :(得分:3)
你可以index这样;使用t
创建列索引并将其与d[t, np.arange(len(t))]
一起使用(这称为高级索引):
(d[t, np.arange(len(t))] == result).all()
# True
eval()