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]])
    
  • 相关阅读:
    uTenux-OS-Task再探
    uTenux——LED驱动讲解
    uTenux——HelloWord
    uTenux——重新整理底层驱动库
    template的超级bug
    [LeetCode] Integer to Roman
    [LeetCode] Roman to Integer
    [LeetCode]Flatten Binary Tree to Linked List
    [LeetCode] LRU Cache [Forward]
    [LeetCode] Reorder List
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/9940576.html
Copyright © 2011-2022 走看看