gpt4 book ai didi

Javascript:遍历对象列表并缩放已知最小值和最大值之间的值

转载 作者:行者123 更新时间:2023-11-30 15:13:13 25 4
gpt4 key购买 nike

我有一个对象列表,我想在已知的最小值和最大值之间缩放值。因此,如果已知的最小值和最大值为 100、800,我希望结果如下:

{'cat' : 1, 'dog' : 3, 'chimp' : 8} -> {'cat' : 100, 'dog' : 300, 'chimp' : 800}

Python/pandas 实现如下所示

def scale_size(old_value):
if numbers_df['raw_size'].max() == 1:
return 150
old_value = float(old_value)
old_max = numbers_df['raw_size'].max()
old_min = numbers_df['raw_size'].min()
new_max = 150
new_min = 20
old_range = old_max - old_min
new_range = new_max - new_min
new_value = (((old_value - old_min) * new_range) / old_range) + new_min

return int(new_value)

最佳答案

您应该创建一个函数来将您的值从一个范围映射到另一个范围。为此,您应该执行以下操作:

  • 找出当前范围的最小值和最大值(例如 (1,8))
  • 找出您要将值映射到的范围的最小值和最大值(例如 (100,800))
  • 通过计算旧范围内的相对位置并将该相对位置应用于新范围,将现有值从一个范围映射到另一个范围

示例代码

我确信有更有效和/或更清洁的方法来实现这一点,但这可能是您想要做的事情的一个不错的起点。附带说明一下,理论上您可以通过查找键值对中的最小值和最大值来计算当前范围的最小值和最大值,但这可能并不适用于所有情况。

var oldVals = {'cat' : 1, 'dog' : 3, 'chimp' : 8};

function mapValues(oldMin, oldMax, newMin, newMax, values){
var newVals = {};
for (key in values){
newVals[key] = (values[key] - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin;
}
return newVals;
}

console.log(mapValues(1, 8, 100, 800, oldVals));

关于Javascript:遍历对象列表并缩放已知最小值和最大值之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835010/

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