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))) 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    上述代码的输出将是:

    Arr is:
    [   1  256 8755]
    
    内存中的数据以十六进制形式
    ['0x1', '0x100', '0x2233']
    
    应用 byteswap() 函数后,Arr 为:
    [  256     1 13090]
    
    内存中的数据以十六进制形式
    ['0x100', '0x1', '0x3322'] 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10