docs: def delete_action(self, action, player_idx=0):
          """
          Return a new `Player` instance with the action(s) specified by
          `action` deleted from the action set of the player specified by
          `player_idx`. Deletion is not performed in place.
  
          Parameters
          ----------
          action : scalar(int) or array_like(int)
              Integer or array like of integers representing the action(s)
              to be deleted.
  
          player_idx : scalar(int), optional(default=0)
              Index of the player to delete action(s) for.
  
          Returns
          -------
          Player
              Copy of `self` with the action(s) deleted as specified.
  
          Examples
          --------
          >>> player = Player([[3, 0], [0, 3], [1, 1]])
          >>> player
          Player([[3, 0],
                  [0, 3],
                  [1, 1]])
          >>> player.delete_action(2)
          Player([[3, 0],
                  [0, 3]])
          >>> player.delete_action(0, player_idx=1)
          Player([[0],
                  [3],
                  [1]])
  
          """
          payoff_array_new = np.delete(self.payoff_array, action, player_idx)
          return Player(payoff_array_new)