Если заказ не важен, вы можете использовать unique
X = np.matrix([[1, 1, 1, 2, 0, 3, 1],
[1, 2, 2, 0, 3, 3, 1]])
np.unique(X, axis=1)
Результаты в
array([[0, 1, 1, 2, 3],
[3, 1, 2, 0, 3]])
Если важно сохранить порядок, он будет немного медленнее:
X = np.matrix([[1, 1, 1, 2, 0, 3, 1],
[1, 2, 2, 0, 3, 3, 1]])
idxs = np.sort(np.unique(X, axis=1, return_index=True)[1])
answer = X[:, idxs]
Ответ будет тогда:
matrix([[1, 1, 2, 0, 3],
[1, 2, 0, 3, 3]])