def METHOD_NAME(dist, payoff_tensor, temperature=0., aggregate=np.mean):
  """Compute Shannon regularized exploitability of dist for non-symmetric game.
  Args:
    dist: list of 1-d np.arrays, current estimate of nash distribution
    payoff_tensor: (n x A1 x ... x An) np.array, payoffs for each joint action
      assumed to be non-negative. can also be list of (A1 x ... x An) np.arrays
    temperature: non-negative float
    aggregate: function to reduce individual exp_is to scalar, e.g., mean or max
  Returns:
    exploitability (float): avg_i payoff_i of best response_i - payoff_i of dist
  """
  num_players = len(payoff_tensor)
  exp_i = []
  for i in range(num_players):
    nabla_i = misc.pt_reduce(payoff_tensor[i], dist, [i])
    dist_i = dist[i]
    if temperature > 0:
      br_i = special.softmax(nabla_i / temperature)
    else:
      br_i = np.zeros_like(dist_i)
      maxima = (nabla_i == np.max(nabla_i))
      br_i[maxima] = 1. / maxima.sum()
    u_i_br = nabla_i.dot(br_i) + temperature * special.entr(br_i).sum()
    u_i_dist = nabla_i.dot(dist_i) + temperature * special.entr(dist_i).sum()
    exp_i.append(u_i_br - u_i_dist)
  return aggregate(exp_i)