gpt4 book ai didi

python - 使用字典属性的 Numpy 排序类

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:50 25 4
gpt4 key购买 nike

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))

例如,如果我将上述类与另一个函数绑定(bind):

def bindClass()
eval = Evaluations()
eval.addData('high','high')
eval.addData('low', 'low')
eval.addData('med','med')

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

最佳答案

由于您将数据存储在一个列表中,我猜它不会太大,所以 Python 的内置 sorted 例程应该没问题;你可能不需要 Numpy。我还假设您想使用 participationKey 和/或 focusKey 映射存储在 data 中的值以进行排序。你可以做类似的事情

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

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

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

在这些示例中,您向 sorted 函数传递一个“键”,这是一个映射列表元素的可调用函数(在您的例子中是参与-焦点对,我称之为 pf) 到 Python 将按照您想要的方式排序的数值。

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

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

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

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]

关于python - 使用字典属性的 Numpy 排序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com