Python 将宽度x高度x 3个uint8数组合并到宽度x高度x 1个uint32数组中

Python 将宽度x高度x 3个uint8数组合并到宽度x高度x 1个uint32数组中,python,arrays,numpy,Python,Arrays,Numpy,我有一个宽x高x 3通道阵列,就像 import numpy as np aa = np.array(np.random.randint(0, 255, 300), dtype=np.uint8).reshape((10, 10, 3)) 现在,我想把这些数字放到np.uint32数组中。我可以通过创建一个新数组和按位移位与或操作来实现。然而,我想知道是否有一个更干净的方法,创建一个numpy视图 您可以使用: 在您的情况下,首先需要添加一个零平面,或您想要的任何平面作为最后8位: In [

我有一个宽x高x 3通道阵列,就像

import numpy as np
aa = np.array(np.random.randint(0, 255, 300),  dtype=np.uint8).reshape((10, 10, 3))
现在,我想把这些数字放到
np.uint32
数组中。我可以通过创建一个新数组和按位移位与或操作来实现。然而,我想知道是否有一个更干净的方法,创建一个numpy视图

您可以使用:

在您的情况下,首先需要添加一个零平面,或您想要的任何平面作为最后8位:

In [110]: aa = np.array(np.random.randint(0, 255, 300),  dtype=np.uint8).reshape((10, 10, 3))

In [111]: concatenate((aa, zeros(shape=(10, 10, 1), dtype=aa.dtype)), 2).view("uint32")
在某些情况下,您可能需要首先通过
numpy.ascontiguousarray
传递数据,特别是在以下任何情况下:

在由切片、转置、fortran排序等定义的数组上,通常应避免使用更改数据类型大小(每个条目的字节数)的视图

您可能还需要注意
uint32
u4
)的结尾

In [110]: aa = np.array(np.random.randint(0, 255, 300),  dtype=np.uint8).reshape((10, 10, 3))

In [111]: concatenate((aa, zeros(shape=(10, 10, 1), dtype=aa.dtype)), 2).view("uint32")