Kemudraj

serii_zad2

Aug 22nd, 2017
865
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.34 KB | None | 0 0
  1. Пресметка на статистики и два подвижни прозорци Problem 2 (1 / 7)
  2. За даденото податочно множество во листата X_data со предефинирана должина N од секоја колона треба да се пресмета средната вредност. Притоа од стандарден влез се чита должнината на долгиот подвижнен прозорец L1, и краткиот подвижнен прозорец L2. Поместувањето е фиксно и е 1 ред. На излез треба да се испечати испроцесираното множество, така што во секоја линија ќе се испечати бројот на редицата со која завршува подвижниот прозорец и листа од вредности за секоја колона заокружени на 2 децимали: тековната вредност, средната вредност во долгиот подвижен прозорец, средна вредност во краткиот подвижен прозорец, и разлика од двете средни вредности. За M колони во секој ред треба да се испечатат листа со M x 4 елементи (тековна вредност, средна вредност долг подвижен прозорец, средна вредност краток подвижен прозорец, разлика од средните вредности). Заокружувањето се прави при печатењето на вредностите, но тие се чуваат без заокружување.
  3.  
  4. НАПОМЕНА: Заради ефикасност на решението треба да ги пресметувате само статистиките кои се бараат.
  5.  
  6. from __future__ import print_function
  7. import numpy as np
  8. import scipy.stats as sp
  9. import math
  10.  
  11. 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,
  12.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  13.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  16.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  17.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  18.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  19.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  20.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  21.             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  22.             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,
  23.             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,
  24.             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,
  25.             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,
  26.             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,
  27.             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,
  28.             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,
  29.             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  30.  
  31.  
  32. def percentiles_all(x, iqr=True, amplitude=True, percentiles_list=[5, 10, 25, 40, 50, 60, 75, 90, 95]):
  33.     names = ['p_' + str(p) for p in percentiles_list]
  34.     if iqr and 25 in percentiles_list and 75 in percentiles_list:
  35.         names.append('iqr')
  36.     if amplitude and 1 in percentiles_list and 99 in percentiles_list:
  37.         names.append('perc_amp')
  38.     if len(x) == 0:
  39.         values = [0 for i in range(len(names))]
  40.         return values, names
  41.     if len(percentiles_list) > 0 and all([0 < q < 100 for q in percentiles_list]):
  42.         values = list(np.percentile(x, percentiles_list))
  43.     else:
  44.         values = []
  45.     if iqr:
  46.         q1 = percentiles_list.index(25)
  47.         q3 = percentiles_list.index(75)
  48.         values.append(values[q3] - values[q1])
  49.     if amplitude and 1 in percentiles_list and 99 in percentiles_list:
  50.         q1 = percentiles_list.index(1)
  51.         q3 = percentiles_list.index(99)
  52.         values.append(values[q3] - values[q1])
  53.     return values, names
  54.  
  55. def stats_calculate_all(x):
  56.     xnp = np.array(x)
  57.     n = len(x)
  58.     if n == 0:
  59.         values = [0 for i in range(len(stats_all_names))]
  60.         return values, stats_all_names
  61.     values = []
  62.     vmean = float(np.mean(xnp))
  63.     vstd = float(np.std(xnp))
  64.     if vstd != 0:
  65.         snr = vmean / vstd
  66.     values.append(vmean)
  67.     values.append(np.median(xnp))
  68.     values.append(vstd)
  69.     return values
  70.  
  71.  
  72. if __name__ == "__main__":
  73.     x = np.array(X_data)
  74.     w_long = input()
  75.     w_short = input()
  76.     shift=1
  77.     result_final=[]
  78.     for i in range(max(w_short,w_long),len(X_data), shift):
  79.         result=[]
  80.         for j in range(x.shape[1]):
  81.            
  82.             x_w_long_jth = x[i-w_long:i,j]
  83.             x_w_short_jth = x[i-w_short:i,j]
  84.            
  85.             short_mean = float(np.mean(x_w_short_jth))
  86.             long_mean = float(np.mean(x_w_long_jth))
  87.            
  88.             result.append(float((x[i,j])))
  89.             result.append(round(long_mean,2))
  90.             result.append(round(short_mean,2))
  91.             result.append(round(long_mean-short_mean,2))
  92.            
  93.         print(i,result)
Advertisement
Add Comment
Please, Sign In to add comment