【问题标题】:loop to normalize range (0,10) in to (0,1)循环将范围(0,10)标准化为(0,1)
【发布时间】:2019-03-02 02:58:18
【问题描述】:

我需要的是根据大于 2 的单个数字将 0 划分/传播到 1。 像数字 5 所以 0 到 5 会这样划分

0.00  
0.25
0.50
0.75
1.00

列表中有 5 个值

我的另一个问题是如何获得这样的序列,其中中间数字是 1 并且第一个和最后一个数字是 0 ,如果数字是 10。

0.00
0.25
0.50
0.75
1.00
1.00
0.75
0.50
0.25
0.00

【问题讨论】:

  • 上限总是独占。
  • 你可以写i/10而不是i*(1.0/10)
  • 这是因为范围将从 0 开始到 9 结束
  • 请不要编辑您的问题。问一个新问题

标签: python normalization


【解决方案1】:

range(..)的上限是独占(即不枚举),所以需要加上 range(..) 函数的一步:

for i in range(0,11):
     b = i*(1.0/10)
     print b

话虽如此,如果你想创建这样的数组,你可以使用numpy.arange(..):

>>> import numpy as np
>>> np.arange(0, 1.1, 0.1)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

因此,您可以为 offset、end 和 step 参数指定浮点数。

至于你的第二个问题,你可以itertools.chainiterables 一起,比如:

from itertools import chain

for i in chain(range(0, 11), range(10, -1, -1)):
    print(i/10.0)

因此,我们有一个 range(..) 从0 迭代到10(包括两者),还有一个从10 迭代到0(包括两者) .

【讨论】:

  • 如果列表中的最大数量不超过 10 怎么办?对于第二个问题的答案,列表中有 22 项。
  • @AkshatBhargava:但不超过 10 个。如上所述,上限是独有的。所以如果你指定range(m, n),那么所有元素i就是m <= i < n。
【解决方案2】:

您应该使用range(0,11) 来获取从 0 到 10 的所有数字。

【讨论】:

    【解决方案3】:

    范围 0 到 10 将给出从 0 到 9 的数字。以下是一些实用的解释:

    >>> list(range(0,10))  
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    >>> list(range(0,11))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    >>> 
    >>> list(range(0,1))
    [0]
    
    >>>
    

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 2016-10-31
      • 2016-08-19
      • 1970-01-01
      • 2019-12-23
      • 2014-02-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多