1K подписчиков

Программирование на языке Python. Продолжаем о возможностях библиотеки numpy

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Продолжение статей по numpy

Проолжаем заниматься библиотекой numpy

Продолжим наши изыскания в области библиотеки numpy. Возможностей, действительно много.

Массивы как множества

Рассмотрим набор функций numpy, трактующих массивы как множества.

  • unique(m) — возвращает отсортированный массив, из которого удалены дублирующие элементы.
  • intersect1d(m1,m2) — возвращает отсортированные общие элементы двух массивов.
  • union1d(m1, m2) — возвращает упорядоченный объединённый массив.
  • in1d(m1, m1) — возвращает булевый массив, определяющий входит ли элемент m1 в m2.
  • setdiff1d(m1, m2) — упорядоченная разность элементов массивов (входят в m1, но не входит в m2).
  • setxor1d(m1, m2) — упорядоченная симметричная разность двух массивов.

Пример

#!/usr/bin/python3
import numpy as np
m1 = np.array([12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
m2 = np.array([1, 12, 8, 5, 14, 15, 16])
print(np.intersect1d(m1, m2))
print(np.union1d(m1, m2))
print(np.in1d(m1, m2))
print(np.setdiff1d(m1, m2))
print(np.setxor1d(m1, m2) )

Результат выполнения

[ 1 5 8 12]
[ 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16]
[ True False False False True False False True False False False True]
[ 2 3 4 6 7 9 10 11]
[ 2 3 4 6 7 9 10 11 14 15 16]

Работа с файлами в numpy

Конечно, всегда можно загрузить данные из файла обычными средствами Python, а потом преобразовать их в масив (ы) numpy.

В библиотеке есть две функции numpy.load() и numpy.save() вот на них, собственно, всё и строится. Массивы numpy сохраняются в файле специального формата, где хранится не только содержимое массива, но и его размерность.

Например

#!/usr/bin/python3
import numpy as np
ar = np.array([[2, 3], [5, 4], [1, 2]])
print(ar)
np.save("file1", ar)
br = np.load("file1.npy")
print(br)

Результат выполнения

[[2 3]
[5 4]
[1 2]]
[[2 3]
[5 4]
[1 2]]

Т.е. после чтения из файла получили тот же самый массив. По умолчанию массив сохранятеся в файл с расширением npy.

Можно можно сохранять и несколько массиво. Массивы сохраняются функцией savez() и хранятся в файле с расширением npz.

#!/usr/bin/python3
import numpy as np
ar1 = np.array([[2, 3], [5, 4], [1, 2]])
ar2 = np.array([40, 41, 42, 43, 44])
np.savez("file1", a=ar1, b=ar2)
br = np.load("file1.npz")
print(br['a'])
print(br['b'])


Результат выполнения

[[2 3]
[5 4]
[1 2]]
[40 41 42 43 44]

При чтении из файла мы получаем словарик, который содержит массивы, хранимые в файле.

Начала работы с матрицами в numpy

Вопросы линейной алгебры мы рассмотрим в следующей статье, а здесь я только приведу пример.

Тот, кто изучал линейную алгебру знает, что такое умножение матриц. Известно определение: результатом умножения матриц a и b будет матрица c такая, что элемент матрицы c, стоящий в i-той строке и j-том столбце, равен сумме произведений элементов i-той строки матрицы a на соответствующие элементы j-того столбца матрицы b.

Пример умножения двух матриц с помощью метода dot().

#!/usr/bin/python3
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [3, 4]])
c = np.dot(a, b)
print(a)
print(b)
print(c)

Результат выполнения программы

[[1 2]
[3 4]]
[[1 2]
[3 4]]
[[ 7 10]
[15 22]]

Вместо np.dot(a, b) можно использовать и вариант a.dot(b).

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

numpy такой же быстрый, как язык C! Шутка ;)
numpy такой же быстрый, как язык C! Шутка ;)