IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
444B

  1. import numpy as np
  2. def dfill(a):
  3. n = a.size
  4. b = np.concatenate([[0], np.where(a[:-1] != a[1:])[0] + 1, [n]])
  5. return np.arange(n)[b[:-1]].repeat(np.diff(b))
  6. def argunsort(s):
  7. n = s.size
  8. u = np.empty(n, dtype=np.int64)
  9. u[s] = np.arange(n)
  10. return u
  11. def cumcount(a):
  12. n = a.size
  13. s = a.argsort(kind='mergesort')
  14. i = argunsort(s)
  15. b = a[s]
  16. return (np.arange(n) - dfill(b))[i]