Равномерно распределенные числа
Из документации numy linspace :
Возвращение равномерно распределенных чисел за указанный интервал.
Именно то, что нам нужно для решения вашей первой проблемы.
Пример кода
import numpy as np
def spread(n):
return np.linspace(0, 1, n)
Зеркальное отображение списка
Для второго вопроса мы можем просто повторно использовать массив из первого вопроса, переверните его и добавьте.Нам просто нужно целочисленно разделить //
ваше число на 2 (при условии, что оно делится на 2), чтобы число перешло на spread
.Вы получаете обратную версию массива list / tuple / numpy, выполнив следующее:
my_list[::-1]
Примеры кода
Таким образом, ваша функция будет выглядеть примерно так:
import numpy as np
def updown(n):
first_half = spread(n//2)
return np.r_[first_half, first_half[::-1]]
Вы также можете перевернуть массив, используя np.flipud и вместо np.r_ вы можете использовать np.concatenate :
import numpy as np
def updown(n):
first_half = spread(n//2)
return np.concatenate((first_half, np.flipud(first_half)))
Или если вам не нужны массивы в конце, вы можете сделать (так же, как в другом ответе):
import numpy as np
def spread(n):
return list(np.linspace(0, 1, n))
def updown(n):
first_half = spread(n//2)
return first_half + first_half[::-1]