【问题标题】:Using a ''for loop'' to copy numpy arrays使用“for循环”复制numpy数组
【发布时间】:2017-05-08 15:25:52
【问题描述】:

我有 2 个 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 个输入数组的情况下,它以这种方式工作。现在我有 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)

【问题讨论】:

标签: python arrays numpy for-loop


【解决方案1】:

你可以简单地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 可能要容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2021-01-04
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多