Добавить в корзинуПозвонить
Найти в Дзене
programmer's notes (python and more)

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

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео. Продолжение статей по numpy Проолжаем заниматься библиотекой numpy Продолжим наши изыскания в области библиотеки numpy. Возможностей, действительно много. Массивы как множества Рассмотрим набор функций numpy, трактующих массивы как множества. Пример #!/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, а потом пр
Оглавление

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

Программирование на языке Python. Индексная стать на подборку "Некоторые полезные библиотеки для Python"
programmer's notes (python and more)22 апреля 2024

Продолжение статей по 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! Шутка ;)