python的numpy模块中 .ravel() .flatten() 就是将输入的数组展平,变成1维。所以经常使用两个函数来将多维数组进行展平,变成1维,距离,如下图所示:
>>> import numpy as np
>>> a=np.array([[1,2,3],[4,5,6]])
>>> print(a.ravel())
[1 2 3 4 5 6]
>>> print(a.flatten())
[1 2 3 4 5 6]
两个函数也有区别,numpy.flatten()返回一份拷贝,对数据更改时不会影响原来的数组。
而numpy.ravel()则返回视图,对数据更改时会影响原来的数组。这就是主要区别。其中这种情况遇到问题比较少,所以经常使用这两个函数是没有问题的。
>>> import numpy as np
>>> a=np.array([[1,2,3],[4,5,6]])
>>> a.flatten()[2]=50
>>> print(a.flatten()) # 结果不变
[1 2 3 4 5 6]
>>> import numpy as np
>>> a=np.array([[1,2,3],[4,5,6]])
>>> a.ravel()[2]=50
>>> print(a.ravel()) # 结果不变
[1 2 50 4 5 6]