NumPy对象方法和NumPy函数调用有什么区别?

时间:2018-03-30 17:46:07

标签: python function numpy methods

如果我有一个NumPy数组,

>>> x = np.arange(10)

使用对象方法获取有关该数组的信息之间有什么区别

>>> x.mean()
4.5

与使用NumPy函数相比

>>> np.mean(x)
4.5

我希望对象方法正在调用该函数,但是有些例子中没有包含函数作为方法,例如

>>> np.median(x)
4.5
>>> x.median()
AttributeError: 'numpy.ndarray' object has no attribute 'median'

排除某些功能似乎表明功能方法比面向对象方法更完整或更受欢迎,因为它消除了来回切换的需要。是否故意排除某些方法?与其他方法相比,一种方法有固有的优势吗?

1 个答案:

答案 0 :(得分:2)

numpy.sortndarray.sort之间存在显着差异:前者返回数组的副本,后者按位排序。

对于其他方法,也可以使用等效函数。函数表单将接受可以转换为NumPy数组的类似数组的集合;这有时很方便。另一方面,这是以更多的检查和函数调用为代价的,因此方法形式应该更快一点。在实践中,这可能是微不足道的;对我来说,决定因素通常是方法需要更少的字符来输入。

当A是二维数组时,一些数学运算更自然地写为方法:比较np.transpose(A)A.T