相关疑难解决方法(0)

快速读取交错数据的方法?

我有一个包含多个数据通道的文件.文件以基本速率进行采样,每个通道以基本​​速率除以某个数字进行采样 - 它似乎总是2的幂,但我认为这不重要.

所以,如果我有通道a,bc,在1,2和4的分隔处采样,我的流将如下所示:

a0 b0 c0 a1 a2 b1 a3 a4 b2 c1 a5 ...
Run Code Online (Sandbox Code Playgroud)

为了增加乐趣,通道可以独立地浮动或整数(虽然我知道每个通道),并且数据流不一定以2的幂结束:示例流在没有进一步扩展的情况下是有效的.虽然我知道我正在处理的是什么,但这些价值有时很大,有时甚至是小端.

我有一些代码可以正确地解包这些并用正确的值填充numpy数组,但它很慢:它看起来像(希望我不会过多地掩盖;只是给出算法的概念):

for sample_num in range(total_samples):
    channels_to_sample = [ch for ch in all_channels if ch.samples_for(sample_num)]
    format_str = ... # build format string from channels_to_sample
    data = struct.unpack( my_file.read( ... ) ) # read and unpack the data
    # iterate over data tuple and put values in channels_to_sample
    for val, ch in zip(data, channels_to_sample):
        ch.data[sample_num / ch.divider] = val …
Run Code Online (Sandbox Code Playgroud)

python optimization numpy binary-data

9
推荐指数
1
解决办法
1708
查看次数

标签 统计

binary-data ×1

numpy ×1

optimization ×1

python ×1