在numpy中flatten和ravel有什么区别?

Bry*_*n P 22 numpy

Numpy v 1.9包含两个看似相同的功能: 'flatten''ravel'

有什么不同?什么时候我可以选择一个与另一个将2-D np.array转换为1-D?

Bry*_*n P 32

Aha: 主要的功能差异是ndarray对象flatten方法,因此只能调用真正的numpy数组.相反,它ravel()是一个库级函数,因此可以在任何可以成功解析的对象上调用.例如,ravel()将在ndarrays列表上工作,而flatten(显然)则不会.

另外,正如@jonrsharpe在他的评论中指出的那样,flatten方法总是返回一个副本,而ravel只在"如果需要的话"中这样做.仍不太确定如何做出这一决定.