This repository has been archived by the owner on May 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patharray_to_abt_np.py
71 lines (52 loc) · 2.29 KB
/
array_to_abt_np.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Input is a Pandas table of ax, ay, az, gx, gy, gz over time
## Output is a np table of ax, ay, az, gx, gy, gz and selected features
import numpy as np
import pandas as pd
from scipy import stats, fft, fftpack
ARRAY_LENGTH = 30
def array_to_abt_np(dataframe):
'''
'''
sensor_data = np.array(dataframe)
#print(sensor_data.shape)
#want to see (# of samples,6)
means = np.mean(sensor_data, axis=0)
# print(sensor_data[:,0].shape)
corrs = [np.sum(np.diag(np.corrcoef(sensor_data[:,0], sensor_data[:,1]))),
np.sum(np.diag(np.corrcoef(sensor_data[:,0], sensor_data[:,2]))),
np.sum(np.diag(np.corrcoef(sensor_data[:,1], sensor_data[:,2]))),
np.sum(np.diag(np.corrcoef(sensor_data[:,3], sensor_data[:,4]))),
np.sum(np.diag(np.corrcoef(sensor_data[:,3], sensor_data[:,5]))),
np.sum(np.diag(np.corrcoef(sensor_data[:,4], sensor_data[:,5])))]
ranges = np.ptp(sensor_data, axis = 0)
stds = np.std(sensor_data, axis=0)
moment_3 = stats.moment(sensor_data, moment=3, axis=0)
dcts = fftpack.dct(sensor_data, axis=0)
sorted_dcts = np.sort(dcts, axis=0)
max_dcts = sorted_dcts[0]
sum_dcts = np.sum(dcts,axis=0)
#second_max_dcts = sorted_dcts[1]
#third_max_dcts = sorted_dcts[2]
ffts = fft(sensor_data, axis=0)
sorted_ffts = np.sort(ffts,axis=0)
max_ffts = sorted_ffts[0]
sum_ffts = np.sum(ffts,axis=0)
#second_max_ffts = sorted_ffts[1]
#third_max_ffts = sorted_ffts[2]
#to_be_stacked = (means, ranges, stds, corrs, moment_3, max_dcts,
#second_max_dcts, third_max_dcts,
#max_ffts, second_max_ffts, third_max_ffts, )
to_be_stacked = (means, ranges, stds, corrs, moment_3, max_dcts,
sum_dcts, max_ffts, sum_ffts)
abt_table = np.vstack(to_be_stacked)
return abt_table
def array_to_wang2012(dataframe):
sensor_data = np.array(dataframe)
# smooth/interpolate
# mean,std,var,iqr,corr,mad,rms,energy
means = np.mean(sensor_data, axis=0)
stds = np.std(sensor_data, axis=0)
iqrs = np.percentile(sensor_data,75,axis=0) - np.percentile(sensor_data,25,axis=0)
def smooth_data(dataframe):
sensor_data = np.array(dataframe)
return np.resize(sensor_data,(ARRAY_LENGTH,6))