我有一个函数,它给出了给定值的索引。例如,
def F(value):
index = do_something(value)
return index
我想用这个索引来填充一个巨大的numpy数组1s。让调用数组features
l = [1,4,2,3,7,5,3,6,.....]
注意:features.shape[0] = len(l)
for i in range(features.shape[0]):
idx = F(l[i])
features[i, idx] = 1
有没有pythonic方法来执行此操作(因为如果数组很大,循环需要花费很多时间)?
答案 0 :(得分:1)
如果您可以向F(value)
进行矢量化,则可以编写类似
indices = np.arange(features.shape[0])
feature_indices = F(l)
features.flat[indices, feature_indices] = 1
答案 1 :(得分:0)
试试这个:
i = np.arange(features.shape[0]) # rows
j = np.vectorize(F)(np.array(l)) # columns
features[i,j] = 1