总结:
同:都能将矩阵变为向量(即扁平化)
异:将扁平化的结果传给一个变量,对于ravel()来说,改变这个变量原矩阵也会改变(即传入的是引用而不是复制)
建议:尽量使用flatten()函数,以免造成不必要的错误
代码解释:
from numpy import *
a = arange(12).reshape(3,4)
print(a)
'''
输出:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
b = a.copy() # 创建一个和a相同内容的数组b
c = a.ravel()
d = b.flatten()
print(c)
# 输出: [ 0 1 2 3 4 5 6 7 8 9 10 11]
print(d)
# 输出: [ 0 1 2 3 4 5 6 7 8 9 10 11]
# 可以看到c、d结果相同
# 在修改c的时候,a中相应的数也改变了
c[1] = 99
d[1] = 99
print(a)
'''
输出:
[[ 0 99 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
print(b)
'''
输出:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''