2017-04-22 155 views
2

我想用相同数量的参数合并两个数组。合并两个numpy数组

输入:

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 mlns行循环。所以,我试图找到例如更快的方法与此代码:

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

它的工作远远比以前更循环速度较快,但其追加第二阵列的只有第一个值。 你能帮我吗?

回答

5

使用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意味着我们要水平串联。

这对我的作品

1

使用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()