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

8
如果我有一个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
没有系统性的差异或关系。大多数函数都是用Python编写的,您可以阅读它们。如果存在相应的方法,许多函数将动作委托给该方法。在执行操作之前,函数形式还可以将列表转换为数组。方法调用通常会更快一些,因为它涉及一个较少的调用层。 - hpaulj
1
还有一些操作符(它们转换为方法调用)、ufuncs(可以接受多个数组)和接受数组列表的函数。请记住,numpy 有着悠久的历史和众多贡献者。 - hpaulj
1个回答

5
< p > numpy.sort 和 ndarray.sort 之间有明显的区别:前者返回数组的副本,后者原地排序。对于其他方法,同样可以使用等效的函数。函数形式将接受可以转换为NumPy数组的类似数组的集合;这有时很方便。另一方面,这是以一些更多的检查和函数调用为代价的,因此方法形式应该会稍微快一点。实际上,这可能是可以忽略不计的;对我来说,决定因素通常是方法输入较少的字符。< /p> < p > 有些数学运算更自然地编写为方法:当A是二维数组时,请比较np.transpose(A)和A.T。< /p>

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