慕运维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,而不是视图。