【问题标题】:Merge two numpy arrays合并两个numpy数组
【发布时间】:2017-09-19 13:44:40
【问题描述】:

我正在尝试合并两个具有相同数量参数的数组。

输入:

first = [[650001.88, 300442.2,   18.73,  0.575,  650002.094, 300441.668, 18.775],
         [650001.96, 300443.4,   18.7,   0.65,   650002.571, 300443.182, 18.745],
         [650002.95, 300442.54,  18.82,  0.473,  650003.056, 300442.085, 18.745]]

second = [[1],
          [2],
          [3]]

我的预期输出:

final = [[650001.88, 300442.2,   18.73,  0.575,  650002.094, 300441.668, 18.775, 1],
             [650001.96, 300443.4,   18.7,   0.65,   650002.571, 300443.182, 18.745, 2],
             [650002.95, 300442.54,  18.82,  0.473,  650003.056, 300442.085, 18.745, 3]]

为此,我创建了一个简单的循环:

for i in first:
        for j in second:
            final += np.append(j, i)

我得到了我的补充,我错过了一些东西。首先,我的循环非常慢。其次,我的数据相当有我有超过 2 百万行要循环。因此,我尝试使用以下代码找到更快的方法:

final = [np.append(i, second[0]) for i in first] 

它的工作速度比前一个循环快得多,但它只附加第二个数组的第一个值。 你能帮帮我吗?

【问题讨论】:

    标签: arrays python-3.x numpy merge


    【解决方案1】:

    使用np.array,然后使用np.concatenate

    import numpy as np
    
    first = np.array([[650001.88, 300442.2,   18.73,  0.575,  
                       650002.094, 300441.668, 18.775],
                      [650001.96, 300443.4,   18.7,   0.65,   
                       650002.571, 300443.182, 18.745],
                      [650002.95, 300442.54,  18.82,  0.473,  
                       650003.056, 300442.085, 18.745]])
    
    second = np.array([[1],
                       [2],
                       [3]])
    
    np.concatenate((first, second), axis=1)
    

    其中axis=1表示我们要水平连接。

    这对我有用

    【讨论】:

      【解决方案2】:

      使用np.column_stack:

      import numpy as np
      
      first = [[650001.88, 300442.2,   18.73,  0.575,  650002.094, 300441.668, 18.775],
               [650001.96, 300443.4,   18.7,   0.65,   650002.571, 300443.182, 18.745],
               [650002.95, 300442.54,  18.82,  0.473,  650003.056, 300442.085, 18.745]]
      
      second = [[1],
                [2],
                [3]]
      
      np.column_stack([first, second])
      

      如果你需要它作为一个列表,使用方法tolist

      np.column_stack([first, second]).tolist()
      

      【讨论】:

        【解决方案3】:

        将 5x3 矩阵乘以 3x2 矩阵(实数矩阵乘积)

        import numpy as np
        np_1= np.arange(15).reshape(5,3)
        np_1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-13
          • 1970-01-01
          相关资源
          最近更新 更多