码迷,mamicode.com
首页 > 其他好文 > 详细

numpy.ravel() vs numpy.flatten()

时间:2019-10-04 20:34:42      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:ref   修改   art   res   优先   功能   ++   cts   tail   

两者所要实现的功能是一致的(将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
1.二者的功能

>>> x = np.array([[1, 2], [3, 4]])
>>> x
array([[1, 2],
       [3, 4]])
>>> x.flatten()
array([1, 2, 3, 4])
>>> x.ravel()
array([1, 2, 3, 4])
                    两者默认均是行序优先
>>> x.flatten(F)
array([1, 3, 2, 4])
>>> x.ravel(F)
array([1, 3, 2, 4])

>>> x.reshape(-1)
array([1, 2, 3, 4])
>>> x.T.reshape(-1)
array([1, 3, 2, 4])

2.二者的区别

>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()[1] = 100
>>> x
array([[1, 2],
       [3, 4]])            # flatten:返回的是拷贝
>>> x.ravel()[1] = 100
>>> x
array([[  1, 100],
       [  3,   4]])


原文链接:https://blog.csdn.net/lanchunhui/article/details/50354978

numpy.ravel() vs numpy.flatten()

标签:ref   修改   art   res   优先   功能   ++   cts   tail   

原文地址:https://www.cnblogs.com/ccv2/p/11622997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!