从uint8构建uint32 numpy矩阵的有效方法

时间:2018-10-28 14:38:41

标签: python arrays list numpy matrix

我正在存储一个矩阵(列表的python列表,而不是numpy矩阵),其中包含[0; 255]范围内的数字-可表示为uint8s。但是,我想建立一个矩阵,将这些数字打包成32位。

在numpy中是否有一种有效/不错的方法?目前,我正在使用numpy.frombuffer()逐行重建矩阵,但感觉应该有一种更方便的方法来实现这一目标。

当前代码:

def convert_8to32bit_matrix(mat):
    ret_mat = np.zeros(shape=(mat.shape[0], int(mat.shape[1]/4)))
    for i, row in enumerate(mat):
        ret_mat[i] = np.frombuffer(row, dtype=np.uint32)

    return ret_mat

1 个答案:

答案 0 :(得分:1)

使用numpy.ndarray.astype方法:

mat8 = np.array([[1, 2], [3, 4]]).astype(np.uint8)
mat32 = mat8.astype(np.uint32)

print(mat32.dtype) #uint32