有没有办法用numpy来记忆一个大端复数?

时间:2017-06-08 16:11:46

标签: python numpy numpy-memmap

我试图从非常大的文件中加载数据,这些文件格式化为complex64但是在big-endian中。由于它们的大小,我想使用memmap。我可以将数组加载为像这样的big-endian浮点数:

arr = np.memmap(fn, dtype='>f4', shape=(M,N,2))

但如果我尝试将其视为复数,则会恢复byteswapping,即

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 个答案:

答案 0 :(得分:0)

.byteswap()方法似乎不会修改或复制数据。所以

narr = arr [m,n] .view(dtype = np.complex64).byteswap()

是要走的路。希望这有助于其他人。