Метод newbyteorder
Метод newbyteorder изменяет порядок байтов элементов массива.
Он возвращает новый массив с указанным порядком байтов, при этом
исходный массив остаётся неизменным. Метод полезен при работе
с данными из разных архитектур, где порядок байтов отличается
(например, little-endian и big-endian).
Синтаксис
arr.newbyteorder([new_order])
Параметр new_order определяет новый порядок байтов.
Он может принимать строковые значения: '<' для little-endian,
'>' для big-endian, '=' для нативного порядка,
'|' для беззнакового порядка (неприменимо) и 'B'
для обратного порядка. Если параметр не указан, метод меняет
порядок байтов на противоположный текущему.
Пример
Давайте создадим массив и изменим его порядок байтов на little-endian:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype='>i4')
print("Original:", arr.dtype)
arr_new = arr.newbyteorder('<')
print("New:", arr_new.dtype)
Результат выполнения кода:
Original: >i4
New: <i4
Пример
Давайте изменим порядок байтов массива без указания параметра, что приведёт к обратному порядку:
import numpy as np
arr = np.array([10, 20, 30, 40, 50], dtype='<i4')
print("Original dtype:", arr.dtype)
print("Original data:", arr)
arr_new = arr.newbyteorder()
print("New dtype:", arr_new.dtype)
print("New data:", arr_new)
Результат выполнения кода:
Original dtype: <i4
Original data: [10 20 30 40 50]
New dtype: >i4
New data: [10 20 30 40 50]
Пример
Давайте используем метод для массива с типом данных
float64, изменив его на big-endian:
import numpy as np
arr = np.array([1.5, 2.7, 3.9, 4.1], dtype='<f8')
print("Original dtype:", arr.dtype)
print("Original values:", arr)
arr_new = arr.newbyteorder('>')
print("New dtype:", arr_new.dtype)
Результат выполнения кода:
Original dtype: <f8
Original values: [1.5 2.7 3.9 4.1]
New dtype: >f8