python - 合并三个相同形状的 NumPy 数组

标签 python numpy multidimensional-array

我有一个numpy数组 l1形状(128, 128, 3)和数据类型 np.booll1 的所有元素是False 。我还有三个数组 first_l2 , second_l2third_l2形状(128, 128, 1)和数据类型 np.bool .

我想知道的是如何合并first_l2 , second_l2third_l2进入l1这样以前数组的相应元素在 l1 中的顺序是正确的.

最佳答案

我建议通过 concatenate 连接这三个数组而不是 @Holt 提出的硬编码方法。

假设您有三个形状为 (128, 128, 1) 的数组,并且您希望将它们组合成一个形状为 (128, 128, 3).

In [313]: import numpy as np

In [314]: arr1 = np.random.random(size=(128, 128, 1))

In [315]: arr2 = np.random.random(size=(128, 128, 1))

In [316]: arr3 = np.random.random(size=(128, 128, 1)

要实现这一点,您只需将数组传递给 concatenate 函数,如下所示:

In [317]: out1 = np.concatenate((arr1, arr2, arr3), axis=-1)

硬编码方法会产生相同的结果,但它更冗长,并且必须显式分配结果数组:

In [318]: out2 = np.empty(shape=(128, 128, 3))

In [319]: out2[:, :, 0] = arr1[:, :, 0]

In [320]: out2[:, :, 1] = arr2[:, :, 0]

In [321]: out2[:, :, 2] = arr3[:, :, 0]

In [322]: print(np.all(out1 == out2))
True

应该注意的是,@Lauro Bravar 的答案中提出的方法没有提供预期的结果,因为 stack 沿着新轴连接数组。

In [323]: out3 = np.stack((arr1, arr2, arr3))

In [324]: print(out3.shape)
(3, 128, 128, 1)

关于python - 合并三个相同形状的 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49718486/

相关文章:

python - 使用 pydev 时,我可以使用类型名称注释参数以提供上下文信息吗?

python - 在 numpy 数组中组合逻辑语句 AND

python - 平均数据集同时保持其变量?

Python - 在 2D numpy 数组中查找特定值的最大面积的有效方法

python - 通过 np.char.find 比较 pandas 数据帧的两列给出 TypeError : string operation on non-string array

python - TensorFlow ExportOutputs、PredictOuput 并指定 signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY

PHP 迭代多维数组 - 每 x 秒查询一次 Web 服务

c - 以 ip-range 字符串作为参数并返回包含 'C' 中的 ips 列表的数组的函数

python - 如何在一个表达式中合并两个字典(合并字典)?

python - Numpy reshape 保留一些尺寸