📜  Python中不同排序技术的变化

📅  最后修改于: 2022-05-13 01:55:36.747000             🧑  作者: Mango

Python中不同排序技术的变化

这些都是表现非常不同的排序技术的不同类型。让我们研究哪种技术如何工作以及使用哪种技术。

让 'a' 成为一个 numpy 数组

  • a.sort()
    (i) 就地对数组进行排序并返回 None
    (ii) 返回类型为无
    (iii) 占用更少的空间。没有创建副本,因为它直接对原始数组进行排序
    (iv) 比排序更快(a)
    # Python code to sort an array in-place
    # using a.sort
    import numpy as np
      
    # Numpy array created
    a = np.array([9, 3, 1, 7, 4, 3, 6])
      
    # unsorted array print
    print('Original array:\n', a)
      
    # Return type is None
    print('Return type:', a.sort())
      
    # Sorted array output
    print('Original array sorted->', a)
    
    OUTPUT: For a.sort()
    Original array:
     [9 3 1 7 4 3 6]
    Return type: None
    Original array sorted-> [1 3 3 4 6 7 9]
    
  • 排序(一)
    (i) 从旧列表创建一个新列表并返回新列表,排序
    (ii) 返回类型是一个列表
    (iii) 创建原始数组的副本并进行排序时占用更多空间
    (iv) 比 a.sort() 慢
    # Python code to create a sorted copy using
    # sorted()
    import numpy as np
      
    # Numpy array created
    a = np.array([9, 3, 1, 7, 4, 3, 6])
      
    # unsorted array print
    print('Original array:\n', a)
    b = sorted(a)
      
    # sorted list returned to b, b type is
    #  
    print('New array sorted->', b)
      
    # original array no change
    print('Original array->', a)
    
    OUTPUT:a.sorted()
    Original array:
     [9 3 1 7 4 3 6]
    New array sorted-> [1, 3, 3, 4, 6, 7, 9]
    Original array-> [9 3 1 7 4 3 6]
    
  • np.argsort(a)
    (i) 返回对数组进行排序的索引
    (ii) 返回类型为 numpy 数组
    (iii) 占用空间作为新的排序索引数组返回
    # Python code to demonstrate working of np.argsort
    import numpy as np
      
    # Numpy array created
    a = np.array([9, 3, 1, 7, 4, 3, 6])
      
    # unsorted array print
    print('Original array:\n', a)
      
    # Sort array indices
    b = np.argsort(a)
    print('Sorted indices of original array->', b)
      
    # To get sorted array using sorted indices
    # c is temp array created of same len as of b
    c = np.zeros(len(b), dtype = int)
    for i in range(0, len(b)):
        c[i]= a[b[i]]
    print('Sorted array->', c)
    
    OUTPUT:np.argsort(a)
    Original array:
     [9 3 1 7 4 3 6]
    Sorted indices of original array-> [2 1 5 4 6 3 0]
    Sorted array-> [1 3 3 4 6 7 9]
    
  • np.lexsort((b, a))
    (i) 使用一系列键执行间接排序
    (ii) 按 a 排序,然后按 b
    (iii) 返回类型 ndarray of ints 沿指定轴对键进行排序的索引数组
    (iv) 当一个新的排序索引数组成对返回时占用空间。
    # Python code to demonstrate working of 
    # np.lexsort()
    import numpy as np
      
    # Numpy array created
    a = np.array([9, 3, 1, 3, 4, 3, 6]) # First column
    b = np.array([4, 6, 9, 2, 1, 8, 7]) # Second column
    print('column a, column b')
    for (i, j) in zip(a, b):
        print(i, ' ', j)
      
    ind = np.lexsort((b, a)) # Sort by a then by b
    print('Sorted indices->', ind)
    
    OUTPUT:np.lexsort((b, a))
    column a, column b
    9   4
    3   6
    1   9
    3   2
    4   1
    3   8
    6   7
    Sorted indices-> [2 3 1 5 4 6 0]