Python提供了一些也在python中实现的方法:
权力:x ** 2
与np.power(x,2)
Matrix muliplication elementwise:X * Y
与np.multiply(X,Y)
总结:sum(X)
与np.sum(X)
等
所以,我现在想知道:numpy中的实现是否比Python中的本地实现更有效,或者根本不重要?
答案 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*Y
。 X.__mul__(Y)
是一个numpy np.multiply
,是一类具有附加功能的运算符(如ufunc
,accumulate
等)。它还有许多参数(reduceat
,out
等),这些参数不适用于运营商版本。
casting
有一个Python Sum: sum(X) vs. np.sum(X)
,它将输入视为列表。 sum
将其输入转换为数组,然后求和。
作为一般规则,如果运算符版本适用于您的变量,请使用它。这适用于数字标量和数组。列表通常具有这些运算符的自己版本(例如np.sum
或[1,2,3]*3
)。使用numpy函数版本,如果它使您的代码更清晰(对您而言),或者如果您需要它首先将输入转换为数组。
在特殊情况下,一个版本或另一个版本会更快,但这不应该是第一个考虑因素。获得正确和清晰的代码具有优先权。