algorithm.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from .DataStream import EMchPosmap
  2. import numpy as np
  3. def calc_chratios(data,pos_map,start,end):
  4. view = data[[pos_map.succ_count, pos_map.fail_count, pos_map.commit_count], :]
  5. view = view[:, start:end]
  6. all = np.cumsum(view, axis=1)
  7. succ = all[0, :]
  8. commit = all[0, :] + all[1, :]
  9. commit += 0.0000001
  10. y = succ / commit
  11. y = y.ravel()
  12. return int(all[0, -1]), int(all[0, -1] + all[1, -1]), y
  13. def calc_mchratios(data,pos_map,start,end):
  14. view = data[[pos_map.succ_count, pos_map.fail_count, pos_map.submit_count], :]
  15. view = view[:, start:end]
  16. all = np.cumsum(view, axis=1)
  17. succ = all[0, :]
  18. commit = all[0, :] + all[1, :]
  19. commit += 0.0000001
  20. y = succ / commit
  21. y = y.ravel()
  22. return int(all[0, -1]), int(all[0, -1] + all[1, -1]), y
  23. def calc_morder_send(data, pos_map: type(EMchPosmap), start: int, end: int):
  24. view = data[:, start:end]
  25. sums = np.sum(view, axis=1)
  26. all_return = sums[pos_map.succ_count] + sums[pos_map.fail_count] + 0.0000001
  27. ratio = sums[pos_map.succ_count] / all_return
  28. send_count = sums[pos_map.submit_count] - sums[pos_map.succ_count] - sums[pos_map.fail_count]
  29. send_amounts = sums[pos_map.submit_amounts] - sums[pos_map.succ_mch_amounts] - sums[pos_map.fail_mch_amounts]
  30. lack_amounts = send_amounts * ratio
  31. return send_count, sums[pos_map.submit_count], sums[pos_map.succ_count], sums[pos_map.fail_count], send_amounts, lack_amounts