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')


3
[array([0]), array([1]), array([2, 2, 2]), array([3])]

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')


vectorize straightforward
0:00:57.744643

vectorize predefined
0:01:00.133218


In [ ]: