zoukankan      html  css  js  c++  java
  • numpy的ravel()和flatten()函数

    相同点:

     两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。
    
    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])
    

    不同点:

    两者的区别在于返回拷贝(copy)还是返回视图(view)
    numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,
    而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
    
    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]])
    
  • 相关阅读:
    Exploits Likely Leveraged by Russia’s APT28 in Highly-Targeted Attack
    WAF绕过的一些总结和思考
    PHP SAFE MODE BYPASS
    RAS算法原理
    如何绕过WAF
    360手机助手关于签名校验的分析
    cat 命令详解
    面向对象简介
    APK签名及简单反编译
    面向对象之基本概念 封装、单多继承
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/9940576.html
Copyright © 2011-2022 走看看