Slicing into a numpy array (line above) creates a view into that array. Thus as values of `data_buffer` are changed by `read_raw_segment`, they are changed in the original array. I'd strongly recommend reading the numpy docs about what returns a view into an array, and what causes an array to be copied. It will make your life much easier by avoiding some difficult to track down headaches...