Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Пресметка на статистики и два подвижни прозорци Problem 2 (1 / 7)
- За даденото податочно множество во листата X_data со предефинирана должина N од секоја колона треба да се пресмета средната вредност. Притоа од стандарден влез се чита должнината на долгиот подвижнен прозорец L1, и краткиот подвижнен прозорец L2. Поместувањето е фиксно и е 1 ред. На излез треба да се испечати испроцесираното множество, така што во секоја линија ќе се испечати бројот на редицата со која завршува подвижниот прозорец и листа од вредности за секоја колона заокружени на 2 децимали: тековната вредност, средната вредност во долгиот подвижен прозорец, средна вредност во краткиот подвижен прозорец, и разлика од двете средни вредности. За M колони во секој ред треба да се испечатат листа со M x 4 елементи (тековна вредност, средна вредност долг подвижен прозорец, средна вредност краток подвижен прозорец, разлика од средните вредности). Заокружувањето се прави при печатењето на вредностите, но тие се чуваат без заокружување.
- НАПОМЕНА: Заради ефикасност на решението треба да ги пресметувате само статистиките кои се бараат.
- from __future__ import print_function
- import numpy as np
- import scipy.stats as sp
- import math
- y_labels = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- def percentiles_all(x, iqr=True, amplitude=True, percentiles_list=[5, 10, 25, 40, 50, 60, 75, 90, 95]):
- names = ['p_' + str(p) for p in percentiles_list]
- if iqr and 25 in percentiles_list and 75 in percentiles_list:
- names.append('iqr')
- if amplitude and 1 in percentiles_list and 99 in percentiles_list:
- names.append('perc_amp')
- if len(x) == 0:
- values = [0 for i in range(len(names))]
- return values, names
- if len(percentiles_list) > 0 and all([0 < q < 100 for q in percentiles_list]):
- values = list(np.percentile(x, percentiles_list))
- else:
- values = []
- if iqr:
- q1 = percentiles_list.index(25)
- q3 = percentiles_list.index(75)
- values.append(values[q3] - values[q1])
- if amplitude and 1 in percentiles_list and 99 in percentiles_list:
- q1 = percentiles_list.index(1)
- q3 = percentiles_list.index(99)
- values.append(values[q3] - values[q1])
- return values, names
- def stats_calculate_all(x):
- 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 = []
- vmean = float(np.mean(xnp))
- vstd = float(np.std(xnp))
- if vstd != 0:
- snr = vmean / vstd
- values.append(vmean)
- values.append(np.median(xnp))
- values.append(vstd)
- return values
- if __name__ == "__main__":
- x = np.array(X_data)
- w_long = input()
- w_short = input()
- shift=1
- result_final=[]
- for i in range(max(w_short,w_long),len(X_data), shift):
- result=[]
- for j in range(x.shape[1]):
- x_w_long_jth = x[i-w_long:i,j]
- x_w_short_jth = x[i-w_short:i,j]
- short_mean = float(np.mean(x_w_short_jth))
- long_mean = float(np.mean(x_w_long_jth))
- result.append(float((x[i,j])))
- result.append(round(long_mean,2))
- result.append(round(short_mean,2))
- result.append(round(long_mean-short_mean,2))
- print(i,result)
Advertisement
Add Comment
Please, Sign In to add comment