본문 바로가기
파이썬

파이썬 두 개의 numpy 배열 병합

by º기록 2020. 10. 22.
반응형

동일한 수의 인수를 가진 두 개의 배열을 병합하려고합니다.

입력:

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] 

이전 루프보다 훨씬 빠르게 작동하지만 두 번째 배열의 첫 번째 값만 추가합니다. 도와주세요?

 

해결 방법

 

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 은 가로로 연결 함을 의미합니다.

그것은 나를 위해 작동합니다

 

참조 페이지 https://stackoverflow.com/questions/43561622

 

 

반응형

댓글