合并两个numpy数组

Los*_*ica 6 arrays merge numpy python-3.x

我试图合并具有相同数量的参数的两个数组.

输入:

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]]
Run Code Online (Sandbox Code Playgroud)

我的预期产量:

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]]
Run Code Online (Sandbox Code Playgroud)

要做到这一点,我创建简单的循环:

for i in first:
        for j in second:
            final += np.append(j, i)
Run Code Online (Sandbox Code Playgroud)

我得到了我填补我遗失的东西.首先,我的循环非常慢.其次我的数据非常多,我有超过2毫升的行循环.所以我尝试使用此代码找到更快的方法:

final = [np.append(i, second[0]) for i in first] 
Run Code Online (Sandbox Code Playgroud)

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

mfo*_*rez 12

使用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)
Run Code Online (Sandbox Code Playgroud)

哪里axis=1意味着我们想要水平连接.

这对我行得通


小智 6

用途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])
Run Code Online (Sandbox Code Playgroud)

如果您需要它作为列表,请使用以下方法tolist:

np.column_stack([first, second]).tolist()
Run Code Online (Sandbox Code Playgroud)