代码之家  ›  专栏  ›  技术社区  ›  Ari Frid

是否将数组插入numpy中的另一个数组?

  •  1
  • Ari Frid  · 技术社区  · 2 年前

    我该怎么做?(以计算效率高的方式)

    arr1 = np.array([0, 4, 8, 12, 16])
    arr2 = np.array([1, 5, 9, 13, 17])
    arr3 = np.array([2, 6, 10, 14, 18])
    arr4 = np.array([3, 7, 11, 15, 19])
    
    what_i_want = [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
    
    4 回复  |  直到 2 年前
        1
  •  3
  •   mozway    2 年前

    您可以直接将数组列表传递给 np.ravel 使变平 F ortran顺序:

    np.ravel([arr1, arr2, arr3, arr4], 'F')
    

    较慢的备选方案 stack ravel :

    np.stack([arr1, arr2, arr3, arr4]).ravel('F')
    

    输出:

    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
           17, 18, 19])
    
        2
  •  2
  •   Ali_Sh    2 年前

    使用的转置 np.vstack 和展平:

    np.vstack((arr1, arr2, arr3, arr4)).T.ravel()
    # np.array((arr1, arr2, arr3, arr4)).T.ravel()   # alternative way
    """
    np.vstack
    
    [[ 0  4  8 12 16]
     [ 1  5  9 13 17]
     [ 2  6 10 14 18]
     [ 3  7 11 15 19]]
    
    np.vstack().T
    
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]]
    
    np.vstack().T.ravel()
    
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
    """
    
        3
  •  1
  •   lemon    2 年前

    尝试以下操作:

    np.array([arr1, arr2, arr3, arr4]).T.reshape(1, -1)[0]
    

    输出:

    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
    
        4
  •  0
  •   Tusher    2 年前

    我认为这是实现目标的最简单方法。

    import numpy as np
    arr1 = np.array([0, 4, 8, 12, 16])
    arr2 = np.array([1, 5, 9, 13, 17])
    arr3 = np.array([2, 6, 10, 14, 18])
    arr4 = np.array([3, 7, 11, 15, 19])
    newArray = np.array((arr1, arr2, arr3, arr4)).T.ravel()
    print(newArray)
    

    您想要什么:

    输出:

    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]

        5
  •  0
  •   Muhammad Hamza    2 年前
        #importing dependencies
        import numpy as np
        arr1 = np.array([0, 4, 8, 12, 16])
        arr2 = np.array([1, 5, 9, 13, 17])
        arr3 = np.array([2, 6, 10, 14, 18])
        arr4 = np.array([3, 7, 11, 15, 19])
        #creating an array to store results
        X = []
        #writing a loop to add each element(i) of the arr1,2,3,4 in the result. but                            
        all the arrays must be of the same lenght as are in your case.
        for i in range (0 , len(arr1)):
          X.append(arr1[i])
          X.append(arr2[i])
          X.append(arr3[i])
          X.append(arr4[i])
        print("X = " , X)  
    
        6
  •  -1
  •   Nesaijn    2 年前

    您可以使用 np.concatenate 这样地:

    what_you_want = np.concatenate((arr1, arr2, arr3, arr4))
    

    资料来源: https://numpy.org/doc/stable/user/absolute_beginners.html#adding-removing-and-sorting-elements

    您还可以查看以下内容: https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html?highlight=concatenate#numpy.concatenate