猿问

你什么时候会使用`flatten()`而不是`reshape(-1)`?

通常,当 numpy 具有看似重复的功能时,通常最终会导致其中一个或另一个具有某种独特的目的。

我试图弄清楚是否有任何情况 flatten()应该使用而不是reshape(-1)


拉风的咖菲猫
浏览 136回答 1
1回答

慕运维8079593

flatten 返回数组的副本。reshape如果可能,将返回视图。因此,例如,如果y = x.reshape(-1)是一个视图,那么修改y也会修改x:In [149]: x = np.arange(3)In [150]: y = x.reshape(-1)In [151]: y[0] = 99In [152]: xOut[152]: array([99,  1,  2])但既然y = x.flatten()是副本,修改y永远不会修改x:In [153]: x = np.arange(3)In [154]: y = x.flatten()In [155]: y[0] = 99In [156]: xOut[156]: array([0, 1, 2])以下是何时reshape返回副本而不是视图的示例:In [161]: x = np.arange(24).reshape(4,6)[::2, :]In [163]: y = x.reshape(-1)In [164]: y[0] = 99In [165]: xOut[165]: array([[ 0,  1,  2,  3,  4,  5],       [12, 13, 14, 15, 16, 17]])由于x不受对 分配的影响y,我们知道y是 的副本 x,而不是视图。
随时随地看视频慕课网APP

相关分类

Python
我要回答