The function below uses slices to get the maximum value between 2 indexes at once. So it gets the maximum value between 0 and 10
and then 10 and 12
and such. The function is derived from the answer to this post post. Is there a way I could could replace the list comprehensions in the form of a pandas function like pd.Series()
. Or if possible do it as a numpy function.
JavaScript
x
5
1
list_ = np.array([9887.89, 9902.99, 9902.99, 9910.23, 9920.79, 9911.34, 9920.01, 9927.51, 9932.3, 9932.33, 9928.87, 9929.22, 9929.22, 9935.24, 9935.24, 9935.26, 9935.26, 9935.68, 9935.68, 9940.5])
2
indexes = np.array([0,10,12,14])
3
chunks = np.split(list_, indexes[1:-1])
4
MAX=([c.max() for c in chunks])
5
Advertisement
Answer
I would recommend this:
JavaScript
1
2
1
MAX = np.maximum.reduceat(list_,indexes[:-1])
2
output:
JavaScript
1
2
1
array([9932.33, 9929.22, 9940.5 ])
2
Another way that will NOT increase your performance and is merely a replacement for list comprehension in your answer (in fact, might even be slightly slower):
JavaScript
1
3
1
max = np.vectorize(np.max)
2
MAX = max(chunks)
3