当前位置: 首页 > 面试题库 >

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

计承德
2023-03-14
问题内容

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尽可能返回原始数组的视图。这在打印输出中不可见,但是如果您修改ravel返回的数组,则可能会修改原始数组中的条目。如果修改从flatten返回的数组中的条目,则将永远不会发生。ravel通常会更快,因为没有内存被复制,但是您在修改它返回的数组时要格外小心。
  • reshape((-1,)) 只要数组的步幅允许它就可以获取视图,即使这意味着您并不总是可以获得连续的数组。


 类似资料: