我正在存储一个矩阵(列表的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
答案 0 :(得分:1)
使用numpy.ndarray.astype
方法:
mat8 = np.array([[1, 2], [3, 4]]).astype(np.uint8)
mat32 = mat8.astype(np.uint32)
print(mat32.dtype) #uint32