按索引填充numpy数组

时间:2014-04-02 13:33:25

标签: python arrays numpy

我有一个函数,它给出了给定值的索引。例如,

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方法来执行此操作(因为如果数组很大,循环需要花费很多时间)?

2 个答案:

答案 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