Используйте np.unique
со своим параметром return_inverse
-
np.unique(A, return_inverse=1)[1].reshape(A.shape)+1
Пробный прогон -
In [10]: A
Out[10]:
array([[2, 8, 8],
[3, 4, 5]])
In [11]: np.unique(A, return_inverse=1)[1].reshape(A.shape)+1
Out[11]:
array([[1, 5, 5],
[2, 3, 4]])