До сих пор массив получался из списка, который мы набирали вручную. Для десяти значений это терпимо, для тысячи — нет. У NumPy есть функции, которые сразу создают массив нужного размера.
Нули, единицы и одно число
np.zeros(n) — массив из n нулей, np.ones(n) — из единиц, np.full(n, значение) — из одного и того же
числа. Такие массивы — заготовки: например, счётчики, которые потом будут увеличиваться, или план с одинаковой
суммой каждый месяц.
import numpy as np
print(np.zeros(5))
print(np.ones(3))
print(np.full(4, 7))[0. 0. 0. 0. 0.] [1. 1. 1.] [7 7 7 7]
Нули и единицы получились дробными (0., 1.) — так NumPy делает по умолчанию. np.full берёт тип у
значения: из целого 7 — целые семёрки.
Вы решили откладывать по 5000 ₽ каждый месяц в течение года. Создайте массив plan из 12 одинаковых взносов
по 5000, а в year_total сохраните, сколько накопится за год.
np.full(сколько, что).sum.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
plan = ...
year_total = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
plan = np.full(12, 5000)
year_total = plan.sum()Ряды с шагом: arange
np.arange(начало, конец, шаг) работает как range в Python, но возвращает массив. С одним аргументом —
от 0 до него:
print(np.arange(5))
print(np.arange(1, 10))
print(np.arange(0, 50, 10))[0 1 2 3 4] [1 2 3 4 5 6 7 8 9] [ 0 10 20 30 40]
Создайте массив hours — номера часов суток от 0 до 23.
arange до 24: конец не входит.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
hours = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
hours = np.arange(24)Создайте массив even — чётные числа от 2 до 20 включительно: 2, 4, …, 20.
arange.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
even = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
even = np.arange(2, 21, 2)Что получится: np.arange(1, 10, 3)?
Равные промежутки: linspace
np.linspace(начало, конец, сколько) делит отрезок на равные части и возвращает заданное количество
точек, причём конец входит. Числа всегда дробные — даже если концы целые. Удобно, когда известно, сколько значений нужно, а шаг — нет:
print(np.linspace(0, 1, 5))
print(np.linspace(10, 20, 3))[0. 0.25 0.5 0.75 1. ] [10. 15. 20.]
Разница простая: у arange задают шаг, у linspace — количество точек.
Магазин хочет пять ценовых ступеней, равномерно от 100 до 300 ₽ включительно. Сохраните их в levels.
linspace.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
levels = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
levels = np.linspace(100, 300, 5)Итоги
np.zeros(n),np.ones(n)— нули и единицы (дробные),np.full(n, x)— n одинаковых значений.np.arange(начало, конец, шаг)— ряд с шагом, конец не входит.np.linspace(начало, конец, n)— n точек через равные промежутки, конец входит.