One of the following actions will be performed:
wave_date = sampling_rate * np.diff(wave_data)
or
wave_date = sampling_rate * (wave_data[1:] - wave_data[:-1])
For instance:
In [7]: sampling_rate = 2 In [8]: wave_data = np.array([1, 3, 5, 2, 8, 10]) In [9]: sampling_rate * (wave_data[1:] - wave_data[:-1]) Out[9]: array([ 4, 4, -6, 12, 4])
In terms of performance, both of these approaches are about 500 times faster than list comprehension:
In [16]: wave_data = np.array([1., 3, 5, 2, 8, 10, 5, 2, 4, 7] * 44100) In [17]: %timeit sampling_rate * np.diff(wave_data) 100 loops, best of 3: 2.2 ms per loop In [18]: %timeit sampling_rate * (wave_data[1:] - wave_data[:-1]) 100 loops, best of 3: 2.15 ms per loop In [19]: %timeit [sampling_rate * (wave_data[i+1] - wave_data[i]) for i in xrange(len(wave_data)-1)] 1 loops, best of 3: 970 ms per loop
source share