使用字典属性的Numpy Sort类

2024-09-29 17:13:44 发布

您现在位置:Python中文网/ 问答频道 /正文

class Evaluations():
    columns = {0: "participationKey", 1: "focusKey"}
    participationKey = {"high": 3, "med": 2, "low": 1}
    focusKey = {"high": 3, "med": 2, "low": 1}

    def __init__(self):
        self.data = []

    def addData(self, participation, focus):
        self.data.append((participation focus))

如果我用另一个函数绑定上述类,例如:

^{pr2}$

如何使用NumPy对数据进行排序,然后迭代以打印形式显示结果?谢谢!在


Tags: columnsselfdatainitdefmedclasslow
1条回答
网友
1楼 · 发布于 2024-09-29 17:13:44

由于您将数据存储在一个列表中,我猜它不会太大,所以Python的内置sorted例程应该可以正常工作;您可能不需要Numpy。我还假设您希望使用participationKey和/或{}来映射存储在data中的值。你可以做些像

data = sorted(data, key=lambda pf: participationKey[pf[0]])

按映射的参与键排序。或者如果您想按参与键和焦点键的总和进行排序

^{pr2}$

在这些示例中,您将向sorted函数传递一个“key”,这是一个可调用函数,它将列表元素(在您的示例中是participation focus pairs,我称之为pf)映射到Python将按您想要的方式排序的数值。在

要迭代和打印,只需使用for循环

for pf in data:
    print "participation = %s, focus = %s" % pf

如果必须使用Numpy,那么需要创建一个Numpy索引数组进行排序,然后使用argsort来获取对数据进行排序的索引,然后将其应用到data。在

import numpy as np
inds = np.array([participationKey[pf[0]] for pf in data])
sort_inds = np.argsort(inds)
sorted_data = [data[ind] for ind in sort_inds]

相关问题 更多 >

    热门问题