Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Calculates stats from the provided list xnp, based on the stats config object.
- :param stat_config: Configuration for which stats to be computed.
- :param x: The time series list.
- :param offset: Offset of the values so some stats can be calculated
- :return:
- """
- stats_all_names = ['len', 'min', 'max', 'range', 'mean', 'hmean', 'gmean', 'var', 'std', 'skew', 'kurtosis',
- 'median', 'mode', 'energy', 'energy_sample', 'snr']
- xnp = np.array(x)
- n = len(x)
- if n == 0:
- values = [0 for i in range(len(stats_all_names))]
- return values, stats_all_names
- values = [n]
- vmin = float(min(xnp))
- if vmin < 1:
- offset = 1 + abs(vmin)
- else:
- offset = 0
- vmax = float(max(xnp))
- vrange = vmax - vmin
- vmean = float(np.mean(xnp))
- vstd = float(np.std(xnp))
- venergy = float(sum(np.array(xnp) ** 2))
- venergy_sample = venergy / n
- snr = 0.0
- if vstd != 0:
- snr = vmean / vstd
- values.append(vmin)
- values.append(vmax)
- values.append(vrange)
- values.append(vmean)
- values.append(float(sp.hmean(xnp + offset)))
- values.append(float(sp.gmean(xnp + offset)))
- values.append(vstd ** 2)
- values.append(vstd)
- values.append(sp.skew(xnp))
- values.append(sp.kurtosis(xnp))
- values.append(np.median(xnp))
- vmode = sp.mode(xnp)
- vmode = float(vmode[0][0])
- values.append(vmode)
- values.append(venergy)
- values.append(venergy_sample)
- values.append(snr)
- return values, stats_all_names
- if __name__ == "__main__":
- x = np.array(X_data)
- shift = 1 # pomestuvanje pomegu podviznite prozorci
- w_long = int(input()) # dolzina (broj na otcituvanja) na dolgiot prozorec
- w_short = int(input()) # dolzina (broj na otcituvanja) na kratkiot prozorec
- for i in range(max(w_short, w_long), len(X_data), shift):
- result = []
- for j in range(0, len(x[0, :])): #x.shape[1]):
- x_winow_long = x[i - w_long:i, j]
- x_winow_short = x[i - w_short:i, j]
- s1, stat_names = stats_calculate_all(x_winow_long)
- s2, _ = stats_calculate_all(x_winow_short)
- long_MVA = s1[4] # Moving Average long window
- short_MVA = s2[4] # Moving Average short window
- # broj na primerok, broj na kolona, vrednost na primerokot i kolonata
- # razlika od tekovna vrednost i prosek od dolg prozorec
- # razlika od tekovna vrednost i prosek od kratok prozorec
- # razlika od pomegu prosek vo dolg i kratok prozorec
- result.extend((x[i, j]+0.0, round(long_MVA,2), round(short_MVA,2), round(long_MVA - short_MVA,2)))
- print(i, result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement