Доброго времени суток, читатели, зрители моего канала 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).
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.