首页 > 解决方案 > 如何在python中合并不同维度的数组?

问题描述

我正在使用 keras 分析一些图像表示的数据集。我被困住了,我有两个不同尺寸的图像。请看快照。特征有 14637 个尺寸为 (10,10,3) 的图像,特征2 的尺寸为 (10,10,100)

在此处输入图像描述

有什么方法可以将这两个数据合并/连接在一起。?

标签: pythonimage-processingdeep-learning

解决方案


如果 features 和 features2 包含同一批次图像的特征,即 features[i] 是每个 i 的 features2[i] 的相同图像,那么使用 numpy 函数将特征分组到单个数组中是有意义的concatenate()

newArray = np.concatenate((features, features2), axis=3)

其中 3 是连接数组的轴。在这种情况下,您最终会得到一个具有维度 (14637, 10, 10, 103) 的新数组。

但是,如果它们引用完全不同批次的图像,并且您希望将它们合并到第一个轴上,以便将 features2 的 14637 个图像放置第一个 14637 个图像之后,那么您将无法得到一个数组,因为 numpy 数组的结构是矩阵,而不是对象列表。

例如,如果您尝试执行:

> a = np.array([[0, 1, 2]]) // shape = (1, 3)
> b = np.array([[0, 1]]) // shape = (1, 2)
> c = np.concatenate((a, b), axis=0)

然后,你会得到:

ValueError: all the input array dimensions except for the concatenation axis must match exactly

因为您沿轴 = 0 连接,但轴 1 的尺寸不同。


推荐阅读