Нашли ошибку?
Скачать чистый
урок 1 из 5≈ 15 минупражнения: 0 из 4

Массивы без списков

Нули, единицы, одно и то же число, ряды с шагом и равные промежутки — массив нужного размера одной функцией.

Python запустится при первом выполнении

До сих пор массив получался из списка, который мы набирали вручную. Для десяти значений это терпимо, для тысячи — нет. У 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 — целые семёрки.

[ ]Упражнение 1План накоплений решено

Вы решили откладывать по 5000 ₽ каждый месяц в течение года. Создайте массив plan из 12 одинаковых взносов по 5000, а в year_total сохраните, сколько накопится за год.

plan = ...
year_total = ...

Ряды с шагом: arange

np.arange(начало, конец, шаг) работает как range в Python, но возвращает массив. С одним аргументом — от 0 до него:

[ ]np.arange
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]
[ ]Упражнение 2Часы суток решено

Создайте массив hours — номера часов суток от 0 до 23.

hours = ...

[ ]Упражнение 3Чётные номера решено

Создайте массив even — чётные числа от 2 до 20 включительно: 2, 4, …, 20.

even = ...

Вопрос

Что получится: np.arange(1, 10, 3)?

Равные промежутки: linspace

np.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 — количество точек.

[ ]Упражнение 4Ценовые ступени решено

Магазин хочет пять ценовых ступеней, равномерно от 100 до 300 ₽ включительно. Сохраните их в levels.

levels = ...

Итоги

  • np.zeros(n), np.ones(n) — нули и единицы (дробные), np.full(n, x) — n одинаковых значений.
  • np.arange(начало, конец, шаг) — ряд с шагом, конец не входит.
  • np.linspace(начало, конец, n) — n точек через равные промежутки, конец входит.

Подробнее в справочнике

Нашли ошибку?