Эффективный способ построения матовой матрицы uint32 из uint8 - PullRequest
0 голосов
/ 28 октября 2018

Я храню матрицу (список списков Python, а не пустую матрицу), содержащую числа в диапазоне [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 голосов
/ 28 октября 2018

Использование numpy.ndarray.astype метод:

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

print(mat32.dtype) #uint32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...