首页 > 解决方案 > 为什么 np.resize() out_place,而 ndarray.resize() in_place?

问题描述

根据我的理解,与 classes instance.method(parameters)=class.method(instance,parameters),所以这只是一个符号差异。但是np.resize(ndarray)改变了out_place,而ndarray.resize()改变了in_place。

我错过了什么?

标签: pythonclassnumpy

解决方案


是的,但numpy不是class,而是模块。你想numpy.ndarray作为班级。观察:

In [1]: import numpy as np

In [2]: arr = np.array([1,2,3])

In [3]: np.ndarray.resize(arr, (3,1))

In [4]: arr
Out[4]:
array([[1],
       [2],
       [3]])
In [5]: np.ndarray.resize(arr, (3,))

In [6]: arr
Out[6]: array([1, 2, 3])

因此,numpy.resize它只是一个模块级函数,它返回一个新数组,而不是就地修改数组。


推荐阅读