将值列表赋给numpy数组

1 投票
1 回答
6205 浏览
提问于 2025-04-18 08:41

假设我们有一个二维的 numpy 数组,它的形状是 (10000, 100),也就是说它有10000行和100列,总共有 1000000 个元素。同时,还有一个长度为 1000000 的一维 list 列表。现在,问题是把这个列表里的所有值快速地赋值给这个数组。我的解决方案是:

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 个回答

3

我原以为把列表转换成数组,然后再调整形状会是最快的解决办法,但结果发现,在我的环境下,@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

撰写回答