Это будет работать, учитывая
arr = np.random.randint(15, size = (2,100))
df = pd.DataFrame({ 'old labels' : range(0,15 ,1),
'new labels' : random.sample(range(0,15), 15)})
И предполагая, что у нас есть только два измерения.
d = df['new labels'].to_dict()
arr = np.array([d[x] for y in arr.tolist() for x in y]).reshape(arr.shape)