微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Numpy 从另一列的每个值中找到最常见的项目

如何解决Numpy 从另一列的每个值中找到最常见的项目

我正在研究 kMeans AI 以确定任何一天的季节 为此,我有一个包含 4 列数据的数组 这就是它的样子(虽然它更长):

['0.2742330338168506' '0' '1.3694492732480696' 'winter']
['0.28529288153011745' '0' '1.3805091209613365' 'lente']
['0.28595917620794253' '1' '1.3811754156391616' 'winter']
['0.2874392369724381' '2' '1.3826554764036572' 'lente']
['0.316557712713994' '2' '1.411773952145213' 'herfst']
['0.32113534393276466' '3 '1.4163515833639837' 'lente']
['0.3231108855082745' '3' '1.4220488660040091' 'lente']
['0.3163219663513872' '3' '1.4288377851608964' 'winter']
['0.31201423701381703' '4' '1.4331455144984666' 'lente']
['0.3081781460867783' '4' '1.4369816054255053' 'lente']
['0.29534720251567403' '4' '1.4498125489966096' 'winter']

现在我知道如何在整个数组中找到最常见的项目了,就像这样

Counter(array.flat).most_common()

但是对于这个,我需要每个集群第 4 列中最常见的项目,即第二列中的值,除了制作一个长 for 循环并将它们全部计数之外,是否有更简单的方法来做到这一点?

>

解决方法

出于某种原因,评论中建议的解决方案抛出了 ValueError。所以这是使用熊猫的替代解决方案:

import pandas as pd

data = [] #A nested list for data shown in your question
df = pd.DataFrame(data,columns = ['val1','cluster','val2','season']) #read your data into a dataframe
def print_mode(group):
    print("{} - {}".format(group['cluster'].values[0],group['season'].mode().values))
    
df.groupby('cluster').apply(print_mode)

示例数据的示例输出为:

0 - ['lente' 'winter']
1 - ['winter']
2 - ['herfst' 'lente']
3 - ['lente']
4 - ['lente']

您可以根据自己的用例随意使用它,而不是打印它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。