在 Python 中使用 numpy 迭代附加 ndarray 数组

nzb*_*bru 4 python numpy multidimensional-array

我试图弄清楚如何迭代地追加二维数组以生成一个更大的单一数组。每次迭代都会生成一个 16x200 的 ndarray,如下所示:

迭代“追加”的数组

对于每次迭代,都会生成一个新的 16x200 数组,我想将其“附加”到先前生成的数组中,总共进行 N 次迭代。例如,对于两次迭代,第一个生成的数组将是 16x200,对于第二次迭代,新生成的 16x200 数组将附加到第一次创建一个 16x400 大小的数组。

train = np.array([])
for i in [1, 2, 1, 2]:  
    spike_count = [0, 0, 0, 0]
    img = cv2.imread("images/" + str(i) + ".png", 0)  # Read the associated image to be classified
    k = np.array(temporallyEncode(img, 200, 4))
    #  Somehow append k to train on each iteration
Run Code Online (Sandbox Code Playgroud)

在上述嵌入代码的情况下,循环迭代 4 次,因此最终的训练数组的大小预计为 16x800。任何帮助将不胜感激,我对如何成功实现这一目标一无所知。下面的代码是一般情况:

import numpy as np

totalArray = np.array([])
for i in range(1,3):
    arrayToAppend = totalArray = np.zeros((4, 200))
    # Append arrayToAppend to totalArray somehow
Run Code Online (Sandbox Code Playgroud)

hpa*_*ulj 6

虽然可以concatenate在每次迭代中执行 a (或“堆栈”变体之一),但通常将数组累加到列表中并执行连接一次会更快。列表追加更简单、更快。

alist = []
for i in range(0,3):
    arrayToAppend = totalArray = np.zeros((4, 200))
    alist.append(arrayToAppend)
arr = np.concatenate(alist, axis=1)   # to get (4,600)
# hstack does the same thing   
# vstack is the same, but with axis=0   # (12,200)
# stack creates new dimension,   # (3,4,200), (4,3,200) etc
Run Code Online (Sandbox Code Playgroud)