为什么要将Python列表转换为NumPy数组?

3

有一个简单的方法可以将Python中的数字列表转换为numpy数组,点击这里查看。

但是,我尝试过的简单函数(例如numpy.average(x))都可以处理普通Python列表或numpy数组。在哪些情况下需要将Python中的列表(或数组)转换为numpy数组?

2个回答

4
迄今为止所给出的答案非常好。 通过将许多NumPy功能绑定到数组对象上的方法,简单方便,非常有帮助。 这里有一件事还没有被提到。
在将列表传递给NumPy函数之前,将其转换为数组的一个很好的原因是,大多数NumPy函数在执行任何计算之前会尝试将应该成为数组的参数转换为NumPy数组。 这意味着,当你在值的列表或值的列表中调用NumPy函数时,NumPy首先将列表转换为数组,然后运行计算,最后返回结果。
如果你对同一个列表进行多次调用NumPy函数,每次调用内置的NumPy函数时,NumPy都将被迫构建一个新的数组,并将值从你的数组复制到其中。 这会导致很多不必要的转换,并且会减慢每个函数调用的速度。 要将列表转换为数组,NumPy必须遍历你给定的列表以确定适当的数据类型和形状,分配一个空数组来保存需要的值,然后再次遍历列表以将Python对象中包含的值存储在数组的适当条目中。
所有这些额外的工作都可能会减慢速度,如果没有必要进行所有相同的多次转换,那么多次转换并没有意义。

2
Numpy数组比Python列表更紧凑,使用更少的内存。Numpy不仅更高效,而且更方便。在Numpy中有许多向量和矩阵运算。Numpy还内置了FFT、卷积、统计、直方图等功能。在速度等方面也有很多优势,例如如果将Numpy数组的元素与列表中的元素相加,前者会更快。总的来说,当处理大型多维数组或进行科学计算时,Numpy数组非常有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接