小编典典

numpy中的flatten和ravel函数有什么区别?

all

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]

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


阅读 117

收藏
2022-03-23

共1个答案

小编典典

当前的 API 是:

  • flatten总是返回一个副本。
  • ravel尽可能返回原始数组的视图。这在打印输出中不可见,但是如果您修改 ravel 返回的数组,它可能会修改原始数组中的条目。如果您修改从 flatten 返回的数组中的条目,这将永远不会发生。ravel 通常会更快,因为没有复制内存,但是您必须更加小心地修改它返回的数组。
  • reshape((-1,))每当数组的步幅允许时获取视图,即使这意味着您并不总是得到一个连续的数组。
2022-03-23