Simplest answer
If you literally just want 'UNKNOWN' to be in front, then the easiest and most computationally efficient way to do so is to just swap it with the 0th element:
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']
Preserve the original order of the level elements
If you want the level elements to have the same order in the output as in the input, here's a (slightly more complicated but still pretty simple) way to make that happen:
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']
Don't use partition
If you don't want the results to be sorted, then you shouldn't use numpy.partition:
index1 = np.array(['level4','level3','level2','UNKNOWN','level1'])
index1.partition(np.flatnonzero(index1 == 'UNKNOWN'))
print(index1)
# output:
# ['UNKNOWN' 'level1' 'level2' 'level3' 'level4']