我有一个numpy
数组 l1
形状(128, 128, 3)
和数据类型 np.bool
。 l1
的所有元素是False
。我还有三个数组 first_l2
, second_l2
和third_l2
形状(128, 128, 1)
和数据类型 np.bool
.
我想知道的是如何合并first_l2
, second_l2
和third_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/