import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))
OUTPUT:
print(y.flatten())
[1   2   3   4   5   6   7   8   9]
print(y.ravel())
[1   2   3   4   5   6   7   8   9]

这两个函数返回相同的列表。
那么需要两个不同的功能来执行相同的工作。

最佳答案

当前的API是:

  • flatten 始终返回副本。
  • ravel 尽可能返回原始数组的 View 。这在打印输出中不可见,但是如果您修改ravel返回的数组,则可能会修改原始数组中的条目。如果修改从flatten返回的数组中的条目,则将永远不会发生。 ravel通常会更快,因为不会复制任何内存,但是您在修改返回的数组时必须格外小心。
  • 只要数组的步幅允许,
  • reshape((-1,)) 就会获得一个 View ,即使这意味着您并不总是可以获得连续的数组。
  • 10-08 20:06