2017-05-08 1 views
0

내가 2 개 NumPy와 배열이 복사하는'루프 ': 그래서 내가 무슨 짓을 내가 하나의 배열에 병합해야는 'NumPy와 배열

array1 = np.load(r'C:\Users\x\array1.npy') 
array2 = np.load(r'C:\Users\x\array2.npy') 

:

merg_arr = np.zeros((len(array1)+len(array2), 4, 100, 100), dtype=input_img.dtype) 

for i in range(len(array1)+len(array2)): 
    if i < len(array1): 
     merg_arr[i] = array1[i] 
    else: 
     merge_arr[i] = array2[i-len(array1)] 

에게 이 방법은 2 입력 배열의 경우 작동합니다. 이제 2 대신에 5 개의 입력 배열이 있습니다. 하지만이 경우에 for 루프를 사용하는 방법이 혼란 스럽습니다.

5 개 배열의 모양과 예상 출력은 다음과 같습니다

array1: (7, 4 ,100, 100) 
array2: (14, 4 ,100, 100) 
array3: (5, 4 ,100, 100) 
array4: (8, 4 ,100, 100) 
array5: (66, 4 ,100, 100) 
merg_arr: (100,4,100,100) 
+0

[최소의 완전하고 검증 가능한 예를 만드는 방법]을 참조하십시오. (https://stackoverflow.com/help/mcve) – Kanak

+1

다시 시도하십시오. http://stackoverflow.com/a/43847783 – hpaulj

답변

3

첫 번째 축을 따라 단순히 concatenate을 수 :

merg_arr = np.concatenate([array1, array2, array3, array4, array5], axis=0) 

당신은 또한 for -loop와 함께 할 수 있습니다 :

arrays = (array1, array2, array3, array4, array5) 
length_sum = sum(len(arr) for arr in arrays) 
merge_arr = np.zeros((length_sum, 4,100,100), dtype=arrays[0].dtype) 
start = 0 
for arr in arrays: 
    end = start + len(arr) 
    merge_arr[start:end] = arr 
    start = end 

그러나 concatenate은 아마도 매우 쉽습니다 아르 자형.