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']