首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有更快的方法来运行类似于to_bytes的函数?我查看了Numpys的函数库

是否有更快的方法来运行类似于to_bytes的函数?我查看了Numpys的函数库
EN

Stack Overflow用户
提问于 2022-09-21 11:19:29
回答 1查看 26关注 0票数 -2

我正在寻找一个比Pythons在构建的"to_bytes“中使用的更快的函数。我需要传递给"to_bytes“的参数。

(示例:数据的列表、byte_size和字节顺序)。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 13:09:24

不是完整的答案,而是指向可能的解决方案的指针。np.view( dtype = np.uint8可用于逐字节获取数组的字节视图。

代码语言:javascript
运行
复制
import numpy as np
np.random.seed( 1234 )

arr = np.random.randint( 10000, size = 10, dtype = np.int16 ) - 2000

arr
# array([ 6915,  -682,  6002,  5221,  2445,  5540,  5347, -1336,   317,   4137], dtype=int16)

b_arr = arr.view( np.uint8 ).reshape( -1,2 )

b_arr
#                        Col0  Col1    =  Res0
# array([[  3,  27],    #  3 +  27*256 =  6915 
#        [ 86, 253],    # 86 + 253*256 = 64854 - 65536 = -682 Subtract 65536 if Res0 > 32767
#        [114,  23],
#        [101,  20],
#        [141,   9],
#        [164,  21],
#        [227,  20],
#        [200, 250],
#        [ 61,   1],
#        [ 41,  16]], dtype=uint8)

可以根据需要对上面的内容进行操作,以获得小/大的端点。np.dtype允许数据处于1、2、4或8字节的布局中。然后忽略不需要的列。

结果b_arr的endianness将取决于运行代码的处理器的endianness。

编辑更进一步的想法。

系统的字节顺序在sys库中。一个可能的函数np_to_bytes

代码语言:javascript
运行
复制
import sys

byte_lu = [ np.int8, np.int8, np.int16, np.int32, np.int32, np.int64, np.int64, np.int64, np.int64]
cols_lu = [ 1, 1, 2, 4, 4, 8, 8, 8, 8, 8 ]

def np_to_bytes( int_list, n_bytes, endian = sys.byteorder ):
    arr = np.array( int_list, dtype = byte_lu[ n_bytes ])
    b_arr = arr.view( np.uint8 ).reshape(-1, cols_lu[ n_bytes ])

    if sys.byteorder != endian:
        b_arr = b_arr[ :, ::-1]  # Reverse the columns to change the endian.

    if sys.byteorder != endian:
        b_arr = b_arr[ :, ::-1]  # Reverse the columns to change the endian.
    if endian == 'little':
        return b_arr[ :, : n_bytes ]
    return b_arr[ :, -n_bytes: ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73799871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档