【发布时间】:2020-10-19 09:40:21
【问题描述】:
考虑这个User 对象示例:
import numpy as np
class User:
def __init__(self, name, rating, actual_rating):
self.name: str = name
self.rating: int = rating
# Actual States
self.actual_rating: int = actual_rating
users = []
for actual_rating in np.random.binomial(10000, 0.157, 1000):
users.append(
User(str(random()), 1500, actual_rating)
)
# Sorting Users Randomly
sorted_users = []
我如何对这个users 列表进行排序,以便对象在sorted_users 中的索引较低的可能性取决于actual_rating 较高。例如,随机的User("0.5465454", 1500, 1678) 比User("0.7689989", 1500, 1400) 更有可能被排序到sorted_users 列表的索引0。
如果可能的话,有没有一种简洁易读的方法来做到这一点?
【问题讨论】:
-
你可以使用
sorted_users = sorted(users, key=lambda x: x.actual_rating)? -
我似乎无法弄清楚使用什么函数来根据概率对其进行排序。是否有一个 numpy 函数可以做到这一点?
-
听起来您想将十进制值映射到某种概率分布,然后根据值在分布中的位置进行排序?还是只是您希望排序有时会起作用,有时会失败,具体取决于某种概率?
-
第一次如何为每个用户生成一个来自高斯分布的随机数,平均值为
actual_rating?然后你按照这个随机数排序,而不是直接按照actual_rating排序。
标签: python python-3.x sorting