Объект многомерных массивов ndarray 
       Создание массива 
       Арифметические операции с массивами NumPy 
       Основы индексирования и срезы 
       Логическое (Boolean) индексирование 
       Необычное индексирование 
       Транспонирование массивов и замена осей 
 Универсальные функции: быстрые поэлементные функции от массивов 
 Программирование с использованием массивов 
       Выражение условной логики в операциях с массивами 
       Математические и статистические методы 
       Методы для булевых массивов 
       Сортировка 
       Основные операции над множествами для массивов 
 Чтение и запись в/из файлы массивов 
 Линейная алгебра 
 Генерация псевдослучайных числел 
 Пример: Случайное блуждание 
 Упражнения 
       Матрица из нулей и единиц 
       Моделирование нескольких случайных блужданий за раз 
Рассматривается библиотека NumPy. NumPy (сокращение от Numerical Python) предоставляет эффективный интерфейс для хранения и работы с данными. В какой-то степени массивы NumPy аналогичны спискам Python, но массивы NumPy обеспечивают гораздо более эффективное хранение и операции с данными при увеличении массивов в размере. Если NumPy установлен его можно импортировать следующей командой:
import numpy
Большинство людей в мире научного Python импортируют NumPy, используя
np в качестве псевдонима:
import numpy as np
Как было рассказано выше IPython дает возможность быстро просмотреть содержание пакета, а также документацию по функциям.
Например, для того чтобы отобразить содержание пространства имен
numpy, можно выполнить следующее:
In [1]: np.<TAB>
Для отображения встроенной документации NumPy можно набрать следующее:
In [2]: np?
Более детальную документацию вместе с учебниками и другими ресурсами можно найти по адресу: https://numpy.org/
Одна из причин того, почему NumPy настолько важен для численных расчетов в Python, заключается в том, что он разработан, как уже упоминалось выше, для более эффективной работы с большими массивами данных, а именно:
for.
In [1]: import numpy as np
In [2]: my_arr = np.arange(1000000)
In [3]: my_list = list(range(1000000))
In [4]: %%time for _ in range(10): my_arr2 = my_arr*2
CPU times: user 18 ms, sys: 26.4 ms, total: 44.4 ms
Wall time: 86.1 ms
In [5]: %%time for _ in range(10): my_list2 = [x * 2 for x in my_list]
CPU times: user 544 ms, sys: 105 ms, total: 650 ms
Wall time: 655 ms