Ваш вопрос очень неясен, я думаю, вы не понимаете, как работает numpy. Если так, давайте объясним некоторые вещи. Массив из numpy - это не что иное, как строка байтов в памяти. В частности, когда эти байты отображаются для вас, они интерпретируются dtype. Тип dtype используется не для хранения базовых данных, а только для их отображения. Следовательно, изменение dtype изменяет только то, как выглядят данные, но не изменяет сами данные. То же самое для размеров. Размеры данных только изменяют способ отображения и доступа к ним; python фактически не перемещает данные и не изменяет сами данные. Например,
import numpy as np
x = np.array([[1,2,3],[4,5,6]],dtype='int64') #48 bytes, each int takes up 8 bytes.
print(x)
x.dtype = 'int32'
print(x)
x.dtype = 'float'
print(x)
x.dtype = 'int16'
print(x)
Обратите внимание, что мы можем изменить dtype, и вычисление абсолютного нуля выполняется массивом (поскольку базовые данные уже являются массивом байтов). Аналогичным образом мы можем изменить форму, и абсолютно нулевые вычисления также выполняются.
x.shape = (2,2,6)
print(x)
Форма и тип не имеют ничего общего с сохраненными данными в памяти. Надеюсь, это прояснит, как мы можем работать с массивом в байтах.
x = np.array([[1,2,3],[4,5,6]],dtype='int64')
print(x)
y = x.tobytes()
# Send y somewhere. Save to a file. Etc.
z = np.frombuffer(y)
z.dtype = 'int64'
z.shape = (2,3)
print(z)