'Return True if `own_action` is a best response to
`opponents_actions`.
Parameters
own_action : scalar(int) or array_like(float, ndim=1)
An integer representing a pure action, or an array of floats
representing a mixed action.
opponents_actions : see `best_response`
tol : scalar(float), optional(default=None)
Tolerance level used in determining best responses. If None,
default to the value of the `tol` attribute.
Returns
bool
True if `own_action` is a best response to
`opponents_actions`; False otherwise.'

def is_best_response(self, own_action, opponents_actions, tol=None):

    if (tol is None):
        tol = self.tol
    payoff_vector = self.payoff_vector(opponents_actions)
    payoff_max = payoff_vector.max()
    if isinstance(own_action, numbers.Integral):
        return (payoff_vector[own_action] >= (payoff_max - tol))
    else:
        return (np.dot(own_action, payoff_vector) >= (payoff_max - tol))
