цикл для нормализации диапазона (0,10) в (0,1) - PullRequest
0 голосов
/ 26 сентября 2018

Что мне нужно, это разделить / распределить от 0 до 1. в соответствии с одним числом, которое больше 2. как число 5, поэтому от 0 до 5 будут делиться следующим образом

0.00  
0.25
0.50
0.75
1.00

5 значений вlist

и мой другой вопрос: что нужно сделать, чтобы получить последовательность, подобную этой, где среднее число равно 1, а первое и последнее число равно 0, если число равно 10.

0.00
0.25
0.50
0.75
1.00
1.00
0.75
0.50
0.25
0.00

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Верхняя граница range(..) равна эксклюзив (то есть перечислено , а не ), поэтому вам нужно добавить один шаг к функции range(..):

for i in range(0,<b>11</b>):
     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.chain итерировать вместе, например:

from itertools import chain

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

Здесь у нас, таким образом, один range(..), который повторяется от 0 до 10 (оба включительно), и один, который повторяется от 10 до 0 (оба включительно).

0 голосов
/ 26 сентября 2018

диапазон от 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]

>>>
0 голосов
/ 26 сентября 2018

Вы должны использовать range(0,11), чтобы получить все числа от 0 до 10.

...