天天看点

python中的 .ravel() .flatten()

相同点:都是想把多维的数组降为1维。

不同点:numpy.flatten() 返回一份拷贝,对数据更改时不会影响原来的数组,而numpy.ravel() 对数据更改时会影响原来的数组。

代码:

import numpy as np
x = np.array([[1, 3, 4], [2, 3, 5]])
print("x.ravel的输出:", x.ravel())
print("x.flatten的输出:", x.flatten())

x.flatten()[1] =10
print("发生改变时x.ravel的输出:", x)

x.ravel()[1] = 10
print("发生改变时x.flatten的输出:", x)

           

输出为:

x.ravel的输出 [1 3 4 2 3 5]
x.flatten的输出 [1 3 4 2 3 5]
发生改变时x.ravel的输出 [[1 3 4]
 [2 3 5]]
发生改变时x.flatten的输出 [[ 1 10  4]
 [ 2  3  5]]