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]])
    
  • 相关阅读:
    [POI2014]KUR-Couriers
    MySQL有哪些索引
    索引的设计原则
    explain参数之extra
    explain参数之type
    explain参数之select_type
    如何查询最后一行的记录
    为什么MySQL自增id不连续?
    MySQL字符集
    MySQL有哪些优化策略?
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/9940576.html
Copyright © 2011-2022 走看看