Есть ли способ с помощью numpy запоминать комплексное число с прямым порядком байтов?
Я пытаюсь загрузить данные из очень больших файлов, которые отформатированы как сложные64, но с прямым порядком байтов. Из-за их размера я хочу использовать memmap. Я могу загрузить массив как байты с обратным порядком байтов, например:
arr = np.memmap(fn, dtype='>f4', shape=(M,N,2))
но если я пытаюсь получить представление о нем как о комплексном числе, оно отменяет байт, т.е.
arr[m,n,0]+1j*arr[m,n,1] != arr[m,n].view(dtype=np.complex64)
но
arr[m,n,0]+1j*arr[m,n,1] == arr[m,n].view(dtype=np.complex64).byteswap()
Но это либо создает копию данных, либо изменяет файлы. Есть ли способ сделать это без копирования данных или изменения существующих файлов?
1 ответ
Решение
Похоже, что метод.byteswap() не изменяет и не копирует данные. Так
narr = arr[m,n].view(dtype=np.complex64).byteswap()
Это путь. Надеюсь, это поможет кому-то еще.