【发布时间】:2020-01-03 07:51:37
【问题描述】:
我有一个 100,000 长的字节数组,其中每 16 位行是一个 10 位地址和连接的 6 位计数。我想以数组方式、高效的方式将 16×100,000 数组转换为两个单独的(地址和数据)数组。较短的运行时间对我的应用程序至关重要。
到目前为止我所拥有的是
- 将二进制读入 uint16 数组
f = open(curfile, mode="r")
aint = np.fromfile(f, dtype=np.uint16)
- 读取 for 循环中的每一行
line = '{0:15b}'.format(aint[nn])
- 从二进制中提取整数
addr[nn] = 2**8*return0ifempty(line[0]) + return0ifempty(line[1:9])
count[nn] = line[-6:]
(输入''时return0ifempty返回0)
整个二进制 => uint16 => binary => uint16 的想法是极其低效的。必须有更好的方法来做到这一点。有什么方法可以像在 matlab 中那样截断数组,例如 A(5:10,:)?
【问题讨论】:
标签: python-3.x numpy multidimensional-array binary type-conversion