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)
虽然可以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)