[英]Iteratively appending ndarray arrays using numpy in Python
我试图找出如何迭代地附加2D数组以生成单个更大的数组。 在每次迭代中,生成一个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
在上述嵌入代码的情况下,循环迭代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
虽然可以在每次迭代时执行concatenate
(或“堆栈”变体之一),但通常在列表中累积数组并执行连接一次会更快。 列表追加更简单,更快捷。
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
尝试使用numpy hstack 。 从文档中,hstack采用一系列数组并将它们水平堆叠以形成单个数组。
例如:
import numpy as np
x = np.zeros((16, 200))
y = x.copy()
for i in xrange(5):
y = np.hstack([y, x])
print y.shape
得到:
(16, 400)
(16, 600)
(16, 800)
(16, 1000)
(16, 1200)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.