我的程序在 for 循环中创建一个 numpy 数组。例如,它创建形状为 (100*30*10)
的数组,然后(160*30*10)
然后可能是(120*30*10)
。我必须将上面的内容 append 到一个空的 numpy 数组中,这样在循环结束时,它将是一个形状为 (380*30*10)
的 numpy 数组。 (即 100+160+120 之和)。 numpy 数组中的第二个和第三个维度不会改变。
如何在 python 中执行上述操作。我尝试了以下方法。
np_model = np.append(np_model,np_temp1)
print("Appended model shape is",np_model.shape)
np_label = np.append(np_label,np_temp2)
print("Appended label shape is",np_label.shape)
np_model
是一个空数组,我将其定义为 np_model = np.empty(1,30,10)
和 np_label 为 np_label = np.empty(1 ,str)
np_temp1
对应于每个 for 循环中的数组,如 100*30*10
, 120*30*10
等等和np_temp2
是一个包含“item1”、“item2”等的字符串
np_label
是一个字符串 numpy 数组,有 1 个标签对应于 np_temp1.shape[0]
。但我在 np_model 中得到的结果是大小为 380*30*10
的扁平数组=1140000
感谢任何帮助。
最佳答案
您可以使用 numpy concatenate
函数,将输出 numpy append 到列表中,然后将其提供给 concatenate
函数:
empty_list = []
x = np.zeros([10, 20, 4])
y = np.zeros([12, 20, 4])
empty_list.append(x)
empty_list.append(y)
z = np.concatenate(empty_list, axis=0)
print(x.shape, y.shape, z.shape)
(10, 20, 4) (12, 20, 4) (22, 20, 4)
关于python - 追加具有不同第一维度的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60262301/