假设有一个形状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]
可能有更好的吗?
答案 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