numpy 使用np.unique对分类变量进行排序

siv3szwd  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(108)

我尝试使用下面的代码以排序的方式获取分类变量的唯一值,但没有成功。

import numpy as np

unique_values, unique_value_counts = np.unique(['Small', 'Medium', 'Large', 'Medium', 'Small', 'Large', 'Small', 'Medium'], return_counts = True)

print(unique_values)

它会提供如下输出

['Large', 'Medium', 'Small']

但是,我希望输出为升序格式,如

['Small', 'Medium', 'Large']

是否有一种方法可以使用np.unique()以排序格式获得分类值?

u4vypkhs

u4vypkhs1#

您可以首先使用字典Map翻译字符串:

a = np.array(['Small', 'Medium', 'Large', 'Medium',
              'Small', 'Large', 'Small', 'Medium'])
order = ['Small', 'Medium', 'Large']

key = {k:v for v,k in enumerate(order)}
# {'Small': 0, 'Medium': 1, 'Large': 2}

_, idx, unique_value_counts = np.unique(np.vectorize(key.get)(a),                                        
                                        return_index=True,
                                        return_counts=True)
unique_values = a[idx]

unique_values
# array(['Small', 'Medium', 'Large'], dtype='<U6')

unique_value_counts
# array([3, 3, 2])

相关问题