code: def _multiclass_average_precision_compute(
      state: Union[Tensor, Tuple[Tensor, Tensor]],
      num_classes: int,
      average: Optional[Literal["macro", "weighted", "none"]] = "macro",
      thresholds: Optional[Tensor] = None,
  ) -> Tensor:
      precision, recall, _ = _multiclass_precision_recall_curve_compute(
          state, num_classes, thresholds
      )
      return _reduce_average_precision(
          precision,
          recall,
          average,
          weights=_bincount(state[1], minlength=num_classes).float()
          if thresholds is None
          else state[0][:, 1, :].sum(-1),
      )
  
file_path: torchmetrics/src/torchmetrics/functional/classification/average_precision.py
imports: from typing import List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from typing_extensions import Literal
  from torchmetrics.functional.classification.precision_recall_curve import _binary_precision_recall_curve_arg_validation, _binary_precision_recall_curve_compute, _binary_precision_recall_curve_format, _binary_precision_recall_curve_tensor_validation, _binary_precision_recall_curve_update, _multiclass_precision_recall_curve_arg_validation, _multiclass_precision_recall_curve_compute, _multiclass_precision_recall_curve_format, _multiclass_precision_recall_curve_tensor_validation, _multiclass_precision_recall_curve_update, _multilabel_precision_recall_curve_arg_validation, _multilabel_precision_recall_curve_compute, _multilabel_precision_recall_curve_format, _multilabel_precision_recall_curve_tensor_validation, _multilabel_precision_recall_curve_update
  from torchmetrics.utilities.compute import _safe_divide
  from torchmetrics.utilities.data import _bincount
  from torchmetrics.utilities.enums import ClassificationTask
  from torchmetrics.utilities.prints import rank_zero_warn
label_desc: Use image node_id 5 for calling a global function with example usage: _multiclass_average_precision_compute(state, num_classes, average, thresholds) and returns: _reduce_average_precision