Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将值列表指定给numpy数组_Python_Arrays_Numpy - Fatal编程技术网

Python 将值列表指定给numpy数组

Python 将值列表指定给numpy数组,python,arrays,numpy,Python,Arrays,Numpy,假设有一个二维numpy数组,其形状(10000,100)和大小1000000。还有一个长度为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[

假设有一个二维
numpy
数组,其形状
(10000,100)
和大小
1000000
。还有一个长度为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]

是否有更好的解决方案?

我认为将列表转换为数组并对其进行重塑是最快的解决方案,但在我的设置中@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

my_array.flat[:]=my_list
是可能的。它避免了for循环,但结果是以相同的速度运行。似乎我打乱了计时:)忘了先将range对象转换为list,仍然习惯于py3