zoukankan      html  css  js  c++  java
  • 学习笔记27—python中numpy.ravel() 和 flatten()函数

    简介

    首先声明两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。

    两者功能

    In [14]: x=np.array([[1,2],[3,4]])
    
    # flattenh函数和ravel函数在降维时默认是行序优先
    In [15]: x.flatten()
    Out[15]: array([1, 2, 3, 4])
    
    In [17]: x.ravel()
    Out[17]: array([1, 2, 3, 4])
    
    # 传入'F'参数表示列序优先
    In [18]: x.flatten('F')
    Out[18]: array([1, 3, 2, 4])
    
    In [19]: x.ravel('F')
    Out[19]: array([1, 3, 2, 4])
    
    #reshape函数当参数只有一个-1时表示将数组降为一维
    In [21]: x.reshape(-1)
    Out[21]: array([1, 2, 3, 4])
    #x.T表示x的转置
    In [22]: x.T.reshape(-1)
    Out[22]: array([1, 3, 2, 4])
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    两者区别

    >>> x = np.array([[1, 2], [3, 4]])
    >>> x.flatten()[1] = 100
    >>> x
    array([[1, 2],
           [3, 4]])            
    >>> x.ravel()[1] = 100
    >>> x
    array([[  1, 100],
           [  3,   4]])
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    通过上面的程序可以发现flatten函数返回的是拷贝。

    参考链接:https://blog.csdn.net/liuweiyuxiang/article/details/78220080

  • 相关阅读:
    开发一个delphi写的桌面图标管理代码
    web颜色转换为delphi
    delphi RGB与TColor的转换
    用Delphi制作仿每行带按钮的列表
    Delphi 之 编辑框控件(TEdit)
    numEdit
    DropDownList添加客户端下拉事件操作
    19个必须知道的Visual Studio快捷键
    asp.net线程批量导入数据时通过ajax获取执行状态
    详解JQuery Ajax 在asp.net中使用总结
  • 原文地址:https://www.cnblogs.com/hechangchun/p/9843864.html
Copyright © 2011-2022 走看看