In [2]:
import numpy as np
import pandas as pd
import numpy.ma as ma
from ahh import era
import datetime
In [16]:
def consecutive_masked(data):
return np.split(data, np.where(np.diff(data) != 0)[0] + 1)
# x = np.ma.array([1, 2, 3, 4, np.ma.masked, np.ma.masked, np.ma.masked, 5, 6, 7, np.ma.masked, np.ma.masked, 8, 9, 10, np.ma.masked, np.ma.masked, np.ma.masked, np.ma.masked])
x = [0, 1, 1, 0, 0, 1]
x = np.cumsum(x)
consec_lists = consecutive_masked(x)
len_list = []
for alist in consec_lists:
len_list.append(len(alist))
consec_max_len = np.max(len_list)
print(consec_lists)
# def get_len(data):
# return len(data)
# vlen = np.vectorize(get_len)
# start = era.dtnow()
# vlen_list = vlen(consec_lists)
# era.clockit(start, 'vec fancy len')
# vlen = np.vectorize(len)
# start = era.dtnow()
# vlen_list = vlen(consec_lists)
# era.clockit(start, 'vec basic len')
# start = era.dtnow()
# len_list = []
# for consec_list in consec_lists:
# len_list.append(len(consec_list))
# era.clockit(start, 'for loop')
# start = era.dtnow()
# len_list = [len(consec_list) for x in consec_lists]
# era.clockit(start, 'list comp loop')
# start = era.dtnow()
# map(len, consec_lists)
# era.clockit(start, 'map')
In [48]:
# x = np.load('times.npy')
# x = np.array(x, dtype=int)
# x = np.array(x, dtype=str).tolist()
# x = x * 1000
# # st = era.dtnow()
# # pd.to_datetime(x, format='%Y%j')
# # era.clockit(st, 'pd')
# # def time2dt(time):
# # return datetime.datetime.strptime(time, '%Y%j')
# # st = era.dtnow()
# # [datetime.datetime.strptime(y, '%Y%j') for y in x]
# # era.clockit(st, 'list comp straightforward')
# # st = era.dtnow()
# # [time2dt(y) for y in x]
# # era.clockit(st, 'list comp predefined')
# # st = era.dtnow()
# # map(lambda y: datetime.datetime.strptime(y, '%Y%j'), x)
# # era.clockit(st, 'map straightforward')
# # st = era.dtnow()
# # map(time2dt, x)
# # era.clockit(st, 'map predefined func')
# st = era.dtnow()
# vtime2dt = np.vectorize(datetime.datetime.strptime)
# vtime2dt(x, '%Y%j')
# era.clockit(st, 'vectorize straightforward')
# st = era.dtnow()
# vtime2dt = np.vectorize(time2dt)
# vtime2dt(x)
# era.clockit(st, 'vectorize predefined')
# # st = era.dtnow()
# # for y in x:
# # datetime.datetime.strptime(y, '%Y%j')
# # era.clockit(st, 'for loop straightforward')
# # st = era.dtnow()
# # for y in x:
# # time2dt(y)
# # era.clockit(st, 'for loop predefined')
In [ ]: