Самый простой ответ
Если вы буквально просто хотите, чтобы 'UNKNOWN'
был впереди, то самый простой и эффективный в вычислительном отношении способ сделать это - просто поменять его с элементом 0
th:
index1 = np.array(['level4','level3','level2','UNKNOWN','level1'])
# find the index of 'UNKNOWN'
ix = np.flatnonzero(index1 == 'UNKNOWN')[0]
# swap values
index1[[0, ix]] = index1[[ix, 0]]
print(index1)
# output:
# ['UNKNOWN' 'level3' 'level2' 'level4' 'level1']
Сохранить исходный порядок элементов level
Если вы хотите, чтобы элементы level
имели такой же порядок на выходе, как на входе, вот (немного сложнее)но все же довольно простой) способ сделать это:
index1 = np.array(['level4','level3','level2','UNKNOWN','level1'])
# find the index of 'UNKNOWN'
ix = np.flatnonzero(index1 == 'UNKNOWN')[0]
# shift values
u = index1[ix]
index1[1:ix + 1] = index1[:ix]
index1[0] = u
print(index1)
# output:
# ['UNKNOWN' 'level4' 'level3' 'level2' 'level1']
Не используйте partition
Если вы не хотите, чтобы результаты сортировались, то вам не следуетиспользуйте numpy.partition
:
index1 = np.array(['level4','level3','level2','UNKNOWN','level1'])
index1.partition(np.flatnonzero(index1 == 'UNKNOWN'))
print(index1)
# output:
# ['UNKNOWN' 'level1' 'level2' 'level3' 'level4']