Руководство по использованию Python-библиотеки NUMPY

445

Предок NumPy, Numeric, был разработан Джимом Хугунином. Также был создан пакет Numarray с дополнительной функциональностью. В 2005 году Трэвис Олифант выпустил пакет NumPy, добавив особенности Numarray в Numeric. Это проект с исходным кодом, и в его развитии поучаствовало уже много человек.

NumPy или Numerical Python — это библиотека Python, которая предлагает следующее:

  • Мощный N-мерный массив
  • Высокоуровневые функции
  • Инструменты для интеграции кода C/C++ и Fortran
  • Использование линейной алгебры, Преобразований Фурье и возможностей случайных чисел

Она также предлагает эффективный многомерный контейнер общих данных. С ее помощью можно определять произвольные типы данных. Официальный сайт библиотеки — www.numpy.org

Установка NumPy в Python

  1. Ubuntu Linux

    sudo apt update -y
    sudo apt upgrade -y
    sudo apt install python3-tk python3-pip -y
    sudo pip install numpy -y
    
  2. Anaconda

    conda install -c anaconda numpy
    

Массив NumPy

Это мощный многомерный массив в форме строк и колонок. С помощью библиотеки можно создавать массивы NumPy из вложенного списка Python и получать доступ к его элементам.

Массив NumPy — это не то же самое, что и класс array.array из Стандартной библиотеки Python, который работает только с одномерными массивами.

  1. Одномерный массив NumPy.

    import numpy as np
    
    a = np.array([1,2,3])
    print(a)
    

    Результатом кода выше будет [1 2 3].

  2. Многомерные массивы.

    Тест на знание python

    Что выведет этот код?
    Руководство по использованию Python-библиотеки NUMPY
    Какой будет результат выполнения кода — print('Monty' + 'Python') ?
    Какой будет результат выполнения кода — print(type(lambda: None)) ?
    Если выполнить код ниже, каков будет результат?
    Руководство по использованию Python-библиотеки NUMPY
    Что делает функция re.match()?
    import numpy as np
    
    a = np.array([[1,2,3],[4,5,6]])
    print(a)
    

    Результат — [[1 2 3] [4 5 6]].

Атрибуты массива NumPy

  1. ndarray.ndim
    Возвращает количество измерений массива.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]])
    print(a.ndim)
    

    Вывод кода сверху будет 2, поскольку «a» — это 2-мерный массив.

  2. ndarray.shape
    Возвращает кортеж размера массива, то есть (n,m), где n — это количество строк, а m — количество колонок.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]])
    print(a.shape)
    

    Вывод кода — (2,3), то есть 2 строки и 3 колонки.

  3. ndarray.size
    Возвращает общее количество элементов в массиве.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]])
    print(a.size)
    

    Вывод — 6, потому что 2 х 3.

  4. ndarray.dtype
    Возвращает объект, описывающий тип элементов в массиве.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]])
    print(a.dtype)
    

    Вывод — «int32», поскольку это 32-битное целое число.
    Можно явно определить тип данных массива NumPy.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]], dtype = float)
    print(a.dtype)
    

    Этот код вернет float64, потому что это 64-битное число с плавающей точкой.

  5. ndarray.itemsize
    Возвращает размер каждого элемента в массиве в байтах.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]])
    print(a.itemsize)
    

    Вывод — 4, потому что 32/8.

  6. ndarray.data
    Возвращает буфер с актуальными элементами массива. Это альтернативный способ получения доступа к элементам через их индексы.

    import numpy as np
    a = np.array([[1,2,3],[4,5,6]])
    print(a.data)
    

    Этот код вернет список элементов.

  7. ndarray.sum()
    Функция вернет сумму все элементов ndarray.

    import numpy as np
    a = np.random.random((2,3))
    print(a)
    print(a.sum())
    

    Сгенерированная в этом примере матрица — [[0.46541517 0.66668157 0.36277909] [0.7115755 0.57306008 0.64267163]], следовательно код вернет 3.422183052180838. Поскольку используется генератор случайных чисел, ваш результат будет отличаться.

  8. ndarray.min()
    Функция вернет элемент с минимальным значением из ndarray.

    import numpy as np
    a = np.random.random((2,3))
    print(a.min())
    

    Сгенерированная в этом примере матрица — [[0.46541517 0.66668157 0.36277909] [0.7115755 0.57306008 0.64267163]], следовательно код вернет 0.36277909. Поскольку используется генератор случайных чисел, ваш результат будет отличаться.

  9. ndarray.max()
    Функция вернет элемент с максимальным значением из ndarray.

    import numpy as np
    a = np.random.random((2,3))
    print(a.min())
    

    Сгенерированная в этом примере матрица — [[0.46541517 0.66668157 0.36277909] [0.7115755 0.57306008 0.64267163]], следовательно код вернет 0.7115755. Поскольку используется генератор случайных чисел, ваш результат будет отличаться

Функции NumPy

  1. type(numpy.ndarray)
    Это функция Python, используемая, чтобы вернуть тип переданного параметра. В случае с массивом numpy, она вернет numpy.ndarray.

    import numpy as np
    
    a = np.array([[1,2,3],[4,5,6]])
    print(type(a))
    

    Код выше вернет numpy.ndarray.

  2. numpy.zeroes()
    numpy.zeros((rows, columns), dtype)
    Эта функция создаст массив numpy с заданным количеством измерений, где каждый элемент будет равняться 0. Если dtype не указан, по умолчанию будет использоваться dtype.

    import numpy as np
    np.zeros((3,3))
    print(a)
    

    Код вернет массив numpy 3×3, где каждый элемент равен 0.

  3. numpy.ones()
    numpy.ones((rows,columns), dtype)
    Эта функция создаст массив numpy с заданным количеством измерений, где каждый элемент будет равняться 1. Если dtype не указан, по умолчанию будет использоваться dtype.

    import numpy as np
    np.ones((3,3))
    print(a)
    

    Код вернет массив numpy 3 x 3, где каждый элемент равен 1.

  4. numpy.empty()
    numpy.empty((rows,columns))
    Эта функция создаст массив, содержимое которого будет случайным — оно зависит от состояния памяти.

    import numpy as np
    np.empty((3,3))
    print(a)
    

    Код вернет массив numpy 3×3, где каждый элемент будет случайным.

  5. numpy.arrange()
    numpy.arrange(start, stop, step)
    Эта функция используется для создания массива numpy, элементы которого лежат в диапазоне значений от start до stop с разницей равной step.

    import numpy as np
    a=np.arange(5,25,4)
    print(a)
    

    Вывод этого кода — [5 9 13 17 21]

  6. numpy.linspace()
    numpy.linspace(start, stop, num_of_elements)
    Эта функция создаст массив numpy, элементы которого лежат в диапазоне значений между start до stop, а num_of_elements — это размер массива. Тип по умолчанию — float64.

    import numpy as np
    a=np.linspace(5,25,5)
    print(a)
    

    Вывод — [5 10 15 20 25].

  7. numpy.logspace()
    numpy.logspace(start, stop, num_of_elements)
    Эта функция используется для создания массива numpy, элементы которого лежат в диапазоне значений от start до stop, а num_of_elements — это размер массива. Тип по умолчанию — float64. Все элементы находятся в пределах логарифмической шкалы, то есть представляют собой логарифмы соответствующих элементов.

    import numpy as np
    a = np.logspace(5,25,5)
    print(a)
    

    Вывод — [1.e+05 1.e+10 1.e+15 1.e+20 1.e+25].

  8. numpy.sin()
    numpy.sin(numpy.ndarray)
    Этот код вернет синус параметра.

    import numpy as np
    a = np.logspace(5,25,2)
    print(np.sin(a))
    

    Вывод кода сверху равен [0.0357488 -0.3052578]. Также есть cos(), tan() и так далее.

  9. numpy.reshape()
    numpy.reshape(dimensions)
    Эта функция используется для изменения количества измерений массива numpy. От количества аргументов в reshape зависит, сколько измерений будет в массиве numpy.

    import numpy as np
    a = np.arange(9).reshape(3,3)
    print(a)
    

    Вывод этого года — 2-мерный массив 3×3.

  10. numpy.random.random()
    numpy.random.random((rows, column))
    Эта функция возвращает массив с заданным количеством измерений, где каждый элемент генерируется случайным образом.

    a = np.random.random((2,2))
    

    Этот код вернет ndarray 2×2.

  11. numpy.exp()
    numpy.exp(numpy.ndarray)
    Функция вернет ndarray с экспоненциальной величиной каждого элемента.

    b = np.exp([10])
    

    Значением кода выше будет 22025.4657948.

  12. numpy.sqrt()
    numpy.sqrt(numpy.ndarray)
    Эта функция вернет ndarray с квадратным корнем каждого элемента.

    b = np.sqrt([16])
    

    Этот код вернет значение 4.

Базовые операции NumPy

a = np.array([5, 10, 15, 20, 25])
b = np.array([0, 1, 2, 3])
  1. Этот код вернет разницу двух массивов c = a - b.

  2. Этот код вернет массив, где каждое значение возведено в квадрат b**2.

  3. Этот код вернет значение в соответствии с заданным выражением 10 * np.sin(a).

  4. Этот код вернет True для каждого элемента, чье значение удовлетворяет условие a < 15.

Базовые операции с массивом NumPy

a = np.array([[1,1], [0,1]])
b = np.array([[2,0],[3,4]])
  1. Этот код вернет произведение элементов обоих массивов a * b.

  2. Этот код вернет матричное произведение обоих массивов a @ b
    или a.dot(b).

Выводы

Из этого материала вы узнали, что такое numpy и как его устанавливать, познакомились с массивов numpy, атрибутами и операциями массива numpy, а также базовыми операциями numpy.