numpy中每行的特定列

时间:2017-09-25 18:58:07

标签: python arrays numpy

我想为每行指定特定的列号,如下所示。 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,). 

1 个答案:

答案 0 :(得分:3)

你可以index这样;使用t创建列索引并将其与d[t, np.arange(len(t))] 一起使用(这称为高级索引):

(d[t, np.arange(len(t))] == result).all()
# True
eval()
相关问题