Source code for bluemath_tk.teslakit.util.operations

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import collections
import numpy as np
from math import sqrt


[docs] def GetDivisors(x): l_div = [] i = 1 while i<x: if x%i == 0: l_div.append(i) i = i + 1 return l_div
[docs] def GetUniqueRows(np_array): d = collections.OrderedDict() for a in np_array: t = tuple(a) if t in d: d[t] += 1 else: d[t] = 1 result = [] for (key, value) in d.items(): result.append(list(key) + [value]) np_result = np.asarray(result) return np_result
[docs] def GetBestRowsCols(n): 'try to square number n, used at gridspec plots' sqrt_n = sqrt(n) if sqrt_n.is_integer(): n_r = int(sqrt_n) n_c = int(sqrt_n) else: l_div = GetDivisors(n) n_c = l_div[int(len(l_div)/2)] n_r = int(n/n_c) return n_r, n_c
[docs] def GetRepeatedValues(series): 'Find adyacent repeated values inside series. Return list of tuples' ix = 0 s0, s1 = None, None l_subseq_index = [] while ix < len(series)-1: # subsequence start if series[ix] == series[ix+1] and s0==None: s0 = ix # subsequence end elif series[ix] != series[ix+1] and s0!=None: s1 = ix + 1 # series end if ix == len(series)-2: s1 = ix + 2 # store subsequence if s0!=None and s1!=None: l_subseq_index.append((s0, s1)) s0, s1 = None, None ix+=1 return l_subseq_index