ndarray是一个对象,它为内存中的数据提供Python数组接口,计算机的内存取决于CPU使用的架构。经常发生这样的情况:用户想要使用数组查看的内存与用户运行 Python 的计算机的字节顺序不同。

例如,用户可能正在处理具有小端 CPU 的计算机 - 例如 Intel Pentium,但从大端计算机写入的文件中加载了一些数据。假设用户从 Sun(大端)计算机写入的文件中加载了 4 个字节。众所周知,这4个字节代表两个16位整数。在大端机器上,两字节整数首先存储最高有效字节 (MSB),然后存储最低有效字节 (LSB)。因此,字节按内存顺序为:

  • MSB 整数 1
  • LSB 整数 1
  • MSB 整数 2
  • LSB 整数 2

ndarray.byteswap() 函数

NumPy ndarray.byteswap() 函数交换字节数组元素。它通过返回字节交换数组(可选地就地交换)在低端和大端数据表示之间切换。字节字符串数组不会被交换。复数的实部和虚部单独交换。

语法

numpy.ndarray.byteswap(inplace=False) 

参数

inplace可选。 如果为 True,则就地交换字节,默认为 False。

返回值

返回字节交换的数组。如果 inplace 为 True,则这是 self 的视图。

示例:

在下面的示例中,ndarray.byteswap() 函数用于在低端和大端数据表示之间切换

import numpy as np

Arr = np.array([1, 256, 8755], dtype=np.int16)
print("Arr is:")
print(Arr)

#显示内存中的数据
#十六进制形式
print("\n内存中的数据以十六进制形式")
print(list(map(hex,Arr)))

#使用 byteswap() 函数在之间切换
#低端和大端数据表示
Arr.byteswap(inplace=True)

#应用 byteswap() 函数之后
print("\n应用 byteswap() 函数后,Arr 为:")
print(Arr)

#显示内存中的数据
#十六进制形式
print("\n内存中的数据以十六进制形式")
print(list(map(hex,Arr))) 

上述代码的输出将是:

Arr is:
[   1  256 8755]

内存中的数据以十六进制形式
['0x1', '0x100', '0x2233']

应用 byteswap() 函数后,Arr 为:
[  256     1 13090]

内存中的数据以十六进制形式
['0x100', '0x1', '0x3322']