Python - 将具有相同维度的多个2D阵列合并为一个二维阵列

时间:2018-04-11 04:50:05

标签: python arrays python-3.x numpy opencv

我有3个具有相同尺寸的2D numpy浮点数组( R,G,B )。我想将它合并到一个2d数组中,导致新的2d数组中的每个元素都是3个浮点数的数组。以下是我的初始代码:

image = cv2.imread('hurricane katrina 1.jpg', cv2.IMREAD_GRAYSCALE)

a = 255
b = 2 * (np.pi/255)
c = np.pi / 5


R = a * np.absolute(np.sin(b * image))
G = a * np.absolute(np.sin(b * image + c))
B = a * np.absolute(np.sin(b * image + 2 * c))

如果不迭代数组,我将如何在Python中执行此操作?感谢。

更新:

我想合并3个阵列。比如说

R[0][0] = 3 
G[0][0] = 4 
B[0][0] = 6

然后合并数组将是

RGB[0][0] = (3,4,6)

对于数组中的所有元素都是如此。

因此最终输出形状为(1000,775,3)

1 个答案:

答案 0 :(得分:2)

np.concatenate((a, b,c), axis=see what you want, probably 1)

或者 你也可以使用hstack ......(它们都是同一个......)

Doing, rgb_transform = np.concatenate(R,G,B), throws an error. TypeError: only integer scalar arrays can be converted to a scalar index, 但它不应该扔,因为我已经在括号中传递它们

要解决这个问题,可能 做这个 np.concatenate([a, b, c], axis=see what you want, probably 1)

参考docs

编辑

所提出的问题与上述情况略有不同,所以答案是正确的 np.stack((r,g,b),2)最终输出为(1000,775,3) ...