dynamic_fn的函数功能

1,这个dynamic_fn是一个什么样的功能?
2,map_batch的功能是什么?

import numpy as np
import torch
def dynamic_fn(np_fn, torch_fn, x, is_np=False):
    if type(x) is np.ndarray or is_np:
        return np_fn(x)
    return torch_fn(x)

def normalize_dp(state):
    return dynamic_fn(np.concatenate, torch.cat, [(state[:2] + np.pi) % (2 * np.pi) - np.pi, state[2:]], is_np=type(state) is np.ndarray)

map_batch = lambda fn, x: dynamic_fn(np.stack, torch.stack, tuple(map(fn, x)), is_np=type(x) is np.ndarray)
map_batch(normalize_dp, x_train)