NumPy vs 原生 Python - 最高效的方式

4
对于许多功能,可以使用Python本地或numpy来处理。
这适用于数学函数,可以通过Python本机的“import math”获得,也可以使用numpy方法。对于数组,也是如此,可以使用numpy中的narray和python列表推导式或元组。
我有两个问题与这些功能有关,它们既在Python中,也在numpy中。
1. 一般而言,如果方法在本地Python和numpy中都可用,您更喜欢哪种解决方案?以效率为标准?是否不同?Python和numpy在其处理方式上会有什么不同?
2. 更具体地说,关于数组以及涉及数组的基本函数(如sort、concatenate等),哪种解决方案更有效?是什么使得最有效的解决方案更有效?
这是非常开放而通用的问题。我想这不会对我的代码产生太大影响,但我只是想知道一下。

如果你需要在纯Python中高效地打包数组,请阅读array.array。 (虽然没有花哨的数学运算符,但存储非常高效。) - user4815162342
请使用timeit并告诉我们您的结果。 - kiriloff
3个回答

4
一般来说,为了提高效率,最好避免在两种类型之间进行转换。如果您主要使用非numpy函数处理数据,则它们将在内部使用标准Python数据类型进行操作,因此使用numpy数组会因需要反复转换而效率低下。
同样,如果您使用大量numpy函数来操作数据,则在其间转换回基本的Python类型也是低效的。
就选择函数而言,请使用已经设计好以操作您数据形式的函数——例如,如果您已经有一个numpy数组,请使用numpy函数;同样,如果您有一个基本的Python数据类型,请使用Python函数。numpy的函数将被优化以处理numpy的数据类型。

1
  1. 当需要选择使用NumPy数组和数字列表时,通常前者更快。

  2. 我不太理解第二个问题,所以不会尝试回答。


1

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