【问题标题】:Convert values in list between 0 to 1 [duplicate]将列表中的值转换为 0 到 1 [重复]
【发布时间】:2020-07-17 07:01:11
【问题描述】:

我有一个从 -3 到 3 的整数列表。

list = [-0.33, -2.5, 2.1, ......., -1.2, -2.4444, 1.788]

有没有办法将0到1之间的所有数字转换?

【问题讨论】:

  • 假设您的列表是data,请使用lo, hi = min(data), max(data); print ([(i - lo) / (hi-lo) for i in data])。不必看中numpysklearn
  • 这个问题明确指出输入范围为 -3 到 3。声称它是重复的、@Henry 的评论和 @Divyessh 的答案都是不正确的,因为它们标准化为它的最小值和最大值。根据问题的措辞,这不是所要问的。
  • OP 正在询问Is there a way to convert all the numbers between 0 to 1。我看不出将其标准化@Liam 有什么不正确的。
  • @HenryYik 我将“范围从 -3 到 3”解释为“将(-3 到 3)的范围映射到(0 到 1)的范围。我认为这是最合理的解释,我怀疑 OP 会提到输入的范围,除非这是预期的。你能澄清一下吗,@Chris_007?

标签: python python-3.x floating-point numbers


【解决方案1】:
>>> from sklearn.preprocessing import StandardScaler
>>> data = [[0, 0, 0, 0, 1, 1, 1, 1]]
>>> scaler = StandardScaler()
>>> print(scaler.fit(data))
StandardScaler()
>>> print(scaler.mean_)
[0.5 0.5]
>>> print(scaler.transform(data))

这会将数据转换为 -1 到 1

【讨论】:

    【解决方案2】:

    每个相加三,然后除以六。

    lst = [-0.33, -2.5, 2.1, ......., -1.2, -2.4444, 1.788]
    lst = [(i + 3) / 6 for i in lst]
    

    (我将list重命名为lst,因为前者与先前存在的list类型冲突)

    【讨论】:

      猜你喜欢
      • 2020-11-27
      • 2018-03-12
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      相关资源
      最近更新 更多