为何创建NumPy数组需用np前缀,而数组修改方法无需该前缀?
为什么NumPy中数组方法无需np前缀?
这本质是模块级函数和类实例方法的区别,具体说:
- 像
np.zeros()、np.array()这类创建数组的操作,是NumPy模块直接提供的工具函数。这些函数属于整个NumPy模块的公共接口,Python需要通过模块名np.来定位到对应的函数,所以必须加前缀调用。 - 而
arr.reshape()这类操作,是NumPy中ndarray数组对象的实例方法。当你用np.zeros()创建出arr后,arr已经是ndarray类的一个具体实例,reshape是这个实例自带的功能——就像你用Python列表时,直接写lst.append(1)而不用写list.append(lst,1)一样,实例方法直接绑定在对象上,自然不需要再通过模块名来调用。
简单类比的话:
np.xxx()是找NumPy这个"工厂"要产品;arr.xxx()是用手里已经拿到的"产品"自带的功能。
内容的提问来源于stack exchange,提问作者Naveen Kumar
相关产品推荐
相关产品推荐

