python - 为什么在 numpy 中某些方法(例如 np.dot)可以用点表示法调用,而其他方法(例如 np.insert)不能?
问题描述
刚开始学习 OOP 以及方法和函数之间的区别。对一些非常基本的概念有一些困难。我的理解是,方法通常可以通过两种等效的方式调用。
object.method(parameters)
或者
class.method(object, parameters)
问题为什么有些 numpy 方法可以使用这两种表示法调用,而其他方法似乎只能使用一种?例如,如果 A 和 B 都是相同长度的 numpy 数组,我可以将 numpy.dot 称为
np.dot(a,b)
或等效地
a.dot(b)
然而,对于一些方法,如 numpy.roll 或 numpy.insert(该方法对一个对象而不是两个对象进行操作),情况并非如此。
np.insert(a,[0],[1])
工作正常,而
a.insert([0],[1])
返回以下属性错误
AttributeError: 'numpy.ndarray' object has no attribute 'insert'
这是因为 np.dot 是特定于 ndarray 子类的方法,而 np.insert 可能是所有 numpy 对象的方法,这使得它实际上只能作为函数调用?
任何见解都会有所帮助,谢谢!
解决方案
我可能错了,但你可能有兴趣看看:https ://github.com/numpy/numpy/blob/60cd9d717524e5a003bee9e4270b9c6b8144a7af/numpy/init .pyi #L1358
您可以在其中看到 ndarray 实现了一个dot
方法,其中它似乎将自身作为第一个参数传递,然后采用第二个“类似数组”的输入。因此obj.dot(other_obj)
.
推荐阅读
- python - Python - 查找两个鼠标位置之间的差异
- swift - 如何为自定义类型设置粘贴板属性列表 - NSPasteboard / Swift
- c# - WPF 自定义控件 - 如何正确循环并显示子内容
- php - 根据 src 属性关键字匹配搜索和替换 html 元素
- excel - 将多张工作表导出为多个 PDF - 运行时错误 13
- python - 未找到没有参数的“str_team”反向。尝试了 1 种模式:['str_application\\-1/(?P
[^/]+)/$'] - java - 选择带有对象集合而不批量收集的 Oracle 对象
- javascript - 使用异步状态设置从类转换为功能组件
- python - 如何使用 python-libvirt 启动具有空磁盘的虚拟机?
- python-3.x - 是什么让这个打印在第一个字母之后成为随机字母?