我应该使用python或numpy函数吗?

时间:2018-02-26 17:06:36

标签: python numpy

Python提供了一些也在python中实现的方法:

权力:x ** 2np.power(x,2)

Matrix muliplication elementwise:X * Ynp.multiply(X,Y)

总结:sum(X)np.sum(X)

所以,我现在想知道:numpy中的实现是否比Python中的本地实现更有效,或者根本不重要?

1 个答案:

答案 0 :(得分:1)

这些是不同的情况。运算符与函数,Python列表函数与numpy数组函数。

Power: x ** 2 vs. np.power(x,2)

Python将x**2翻译为x.__pow__(2),从而将任务委派给pow的{​​{1}}方法。如果x是一个数组,那么它使用的数组版本为x。在根据需要将pow转换为数组后,np.power可能也会这样做。有时这个numpy函数委托可以在Python代码中看到。这里编译x

np.power

同样Matrix muliplication elementwise: X * Y vs. np.multiply(X,Y) 变为X*YX.__mul__(Y)是一个numpy np.multiply,是一类具有附加功能的运算符(如ufuncaccumulate等)。它还有许多参数(reduceatout等),这些参数不适用于运营商版本。

casting

有一个Python Sum: sum(X) vs. np.sum(X) ,它将输入视为列表。 sum将其输入转换为数组,然后求和。

作为一般规则,如果运算符版本适用于您的变量,请使用它。这适用于数字标量和数组。列表通常具有这些运算符的自己版本(例如np.sum[1,2,3]*3)。使用numpy函数版本,如果它使您的代码更清晰(对您而言),或者如果您需要它首先将输入转换为数组。

在特殊情况下,一个版本或另一个版本会更快,但这不应该是第一个考虑因素。获得正确和清晰的代码具有优先权。