【发布时间】:2020-12-04 00:41:32
【问题描述】:
我有这个数组显示一些X 产品的用户数量:
users_by_product = [28742, 67514, 3312, 430089, 16125, 11984, 625074, 21800386, 7851, 33,
3751, 21659, 99, 67, 84800, 495868, 95100, 2400, 2700, 2800, 3200, 3600]
我需要将这些值映射到 0 到 10 的范围内,所以我目前正在这样做:
for product_users in users_by_product:
visitors_scaled = (10*(product_users - np.min(users_by_product))/np.ptp(users_by_product)).astype(int)
其中product_users 是users_by_product[i]。输出:
[0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
问题是这个变量返回所有零除了一个产品的 10(因为该产品有很多用户),这里是 users_by_product 的图。
正如您所看到的,有一个产品有很多用户,即获得 10 分,其余的只有零分,我的问题是,是否有一种方法可以最大限度地减少该值在函数中的影响,因为它增加了,所以巨大的价值不会对最终结果产生太大影响,而我其他人可以在保持初始关系的同时获得一些不同于零的价值。
【问题讨论】:
-
通过处理日志来压缩数据范围。您的 minimal reproducible example 应该显示所需的任何导入。什么是
product_users...NameError: name 'product_users' is not defined -
@wwii
product_users是users_by_product的每个值。所以应该为users_by_product中的每个product_users调用返回0到10范围的代码行。 -
@wwii 我已经用要运行的确切代码更新了问题。
标签: python python-3.x numpy math