将值列表分配给numpy数组

时间:2014-06-05 07:41:41

标签: python arrays numpy

假设有一个形状numpy和大小(10000, 100)的二维1000000数组。还有一个list长度1000000。将列表中的所有值分配给数组的最快方法是什么?我的解决方案是:

my_array = np.zeros([10000, 100]) 
my_list = range(1000000)
length_of_list = len(my_list)

for i in range(length_of_list):                  
    my_array.flat[i] = my_list[i]

可能有更好的吗?

1 个答案:

答案 0 :(得分:2)

我认为将列表转换为数组然后重新设置它将是最快的解决方案,但事实证明,在我的设置中,@ M4rtini的单线程更快:

In [25]: %%timeit -n 10 
   ....: for i in range(length_of_list):                  
   ....:     my_array.flat[i] = my_list[i]
   ....: 
10 loops, best of 3: 420 ms per loop

In [26]: %timeit -n 10 my_array.flat[:] = my_list
10 loops, best of 3: 119 ms per loop

In [27]: %timeit -n 10 my_array = np.array(my_list).reshape(10000, 100)
10 loops, best of 3: 133 ms per loop