python - 追加具有不同第一维度的 numpy 数组

标签 python arrays numpy append concatenation

我的程序在 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/

相关文章:

c - 在二维数组中查找 8 个邻居

php - unset() 将数组转换为对象

python - numpy 读取带有复数的 .csv

python - 使用 Pandas 根据另一列的值选择一列

python - 无法将matplotlib安装到pycharm

python - 如何显示外键属性 Django 管理字段?

arrays - 包含特定索引 'i' 的子数组的数量是多少?

python - 任何人都知道检测两个字符串之间相似程度的有效机制

python - 有没有一种优雅的方法可以在单行矩阵和多行矩阵的每一行之间进行点积?

python - Pybind11 和 std::vector——如何使用胶囊释放数据?