2024-10-02 22:32:53 发布
网友
我有一个包含字符串的numpy数组。你知道吗
index1 = ['level4','level3','level2','UNKNOWN','level1']
我想排列这个numpy数组,使'UNKNOWN'始终是数组中的第一个字符串。你知道吗
'UNKNOWN'
所需阵列:
index1 = ['UNKNOWN','level4','level3','level2','level1']
级别排序是不可取的
您可以使用np.roll:
np.roll
import numpy as np index1 = np.array(['level4','level3','level2','UNKNOWN','level1']) position = np.where(index1 == 'UNKNOWN')[0][0] index1[:position + 1] = np.roll(index1[:position + 1], 1) print(index1)
array(['UNKNOWN', 'level4', 'level3', 'level2', 'level1'], dtype='<U7')
partition()将允许对数组重新排序,但会被排序。你知道吗
index1.partition(np.where(index1=='UNKNOWN')[0][0])
如果您真的只想'UNKNOWN'在前面,那么最简单、计算效率最高的方法就是将它与第0个元素交换:
0
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
如果不希望对结果进行排序,则不应使用^{}:
index1 = np.array(['level4','level3','level2','UNKNOWN','level1']) index1.partition(np.flatnonzero(index1 == 'UNKNOWN')) print(index1) # output: # ['UNKNOWN' 'level1' 'level2' 'level3' 'level4']
您可以使用
np.roll
:partition()将允许对数组重新排序,但会被排序。你知道吗
最简单的答案
如果您真的只想
'UNKNOWN'
在前面,那么最简单、计算效率最高的方法就是将它与第0
个元素交换:保持
level
元素的原始顺序如果您希望
level
元素在输出中的顺序与在输入中的顺序相同,那么下面有一种方法(稍微复杂一些,但仍然非常简单):不要使用
partition
如果不希望对结果进行排序,则不应使用^{} :
相关问题 更多 >
编程相关推荐