>>> # generate some fake data:
>>> A = NP.random.randint(5, 10, 100).reshape(10, 10)
>>> A
array([[5, 7, 8, 8, 5, 6, 6, 9, 6, 9],
[9, 8, 8, 9, 5, 6, 6, 9, 8, 9],
[8, 5, 6, 7, 8, 9, 5, 8, 6, 7],
[5, 8, 8, 6, 9, 6, 8, 5, 8, 9],
[6, 9, 8, 8, 5, 7, 6, 5, 7, 6],
[7, 8, 6, 7, 6, 6, 7, 8, 6, 8],
[8, 6, 8, 9, 8, 8, 9, 6, 8, 7],
[8, 7, 8, 5, 9, 5, 7, 8, 6, 9],
[9, 6, 5, 9, 9, 8, 8, 9, 8, 8],
[6, 8, 5, 8, 6, 5, 8, 6, 8, 5]])
>>> # sort this 2D array along one axis (i chose row-wise)
>>> A = NP.sort(A, axis=1)
>>> A
array([[5, 5, 6, 6, 6, 7, 8, 8, 9, 9],
[5, 6, 6, 8, 8, 8, 9, 9, 9, 9],
[5, 5, 6, 6, 7, 7, 8, 8, 8, 9],
[5, 5, 6, 6, 8, 8, 8, 8, 9, 9],
[5, 5, 6, 6, 6, 7, 7, 8, 8, 9],
[6, 6, 6, 6, 7, 7, 7, 8, 8, 8],
[6, 6, 7, 8, 8, 8, 8, 8, 9, 9],
[5, 5, 6, 7, 7, 8, 8, 8, 9, 9],
[5, 6, 8, 8, 8, 8, 9, 9, 9, 9],
[5, 5, 5, 6, 6, 6, 8, 8, 8, 8]])
>>> # now diff the sorted array along the same axis
>>> A1 = NP.diff(A ,axis=1)
>>> # A1 contains non-zero values for "first occurrences" and
>>> # zero values for repeat values
>>> A1
array([[0, 1, 0, 0, 1, 1, 0, 1, 0],
[1, 0, 2, 0, 0, 1, 0, 0, 0],
[0, 1, 0, 1, 0, 1, 0, 0, 1],
[0, 1, 0, 2, 0, 0, 0, 1, 0],
[0, 1, 0, 0, 1, 0, 1, 0, 1],
[0, 0, 0, 1, 0, 0, 1, 0, 0],
[0, 1, 1, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 0, 0, 1, 0],
[1, 2, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 2, 0, 0, 0]])
вы можете переформулировать результат A1 при необходимости, например, как логический массив , имеющий ту же форму, что и A1, в которой каждая ячейка имеет значение T / F в зависимости от того, является ли значение висходная матрица представляет первое вхождение этого значения:
>>> ndx = A1==0
>>> ndx
array([[ True, False, True, True, False, False, True, False, True],
[False, True, False, True, True, False, True, True, True],
[ True, False, True, False, True, False, True, True, False],
[ True, False, True, False, True, True, True, False, True],
[ True, False, True, True, False, True, False, True, False],
[ True, True, True, False, True, True, False, True, True],
[ True, False, False, True, True, True, True, False, True],
[ True, False, False, True, False, True, True, False, True],
[False, False, True, True, True, False, True, True, True],
[ True, True, False, True, True, False, True, True, True]], dtype=bool)