Найти тему
programmer's notes (python and more)

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

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

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

Операции над массивами в numpy

Статье продолжает тему библиотеки numpy.

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

#!/usr/bin/python3
import numpy as np
p = np.arange(-2, 2.1, 0.1)
print(p)

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

[-2.00000000e+00 -1.90000000e+00 -1.80000000e+00 -1.70000000e+00
-1.60000000e+00 -1.50000000e+00 -1.40000000e+00 -1.30000000e+00
-1.20000000e+00 -1.10000000e+00 -1.00000000e+00 -9.00000000e-01
-8.00000000e-01 -7.00000000e-01 -6.00000000e-01 -5.00000000e-01
-4.00000000e-01 -3.00000000e-01 -2.00000000e-01 -1.00000000e-01
1.77635684e-15 1.00000000e-01 2.00000000e-01 3.00000000e-01
4.00000000e-01 5.00000000e-01 6.00000000e-01 7.00000000e-01
8.00000000e-01 9.00000000e-01 1.00000000e+00 1.10000000e+00
1.20000000e+00 1.30000000e+00 1.40000000e+00 1.50000000e+00
1.60000000e+00 1.70000000e+00 1.80000000e+00 1.90000000e+00
2.00000000e+00]

Не правда ли, удобно.

Теперь, если, например, вы хотите получить значения функции по этим значениям, достаточно, например написать

f = np.sin(p)

и f будет содержать значения функции во всех точках p.

Транспонирование массивов в numpy

#!/usr/bin/python3
import numpy as np
p = np.arange(10).reshape(5, 2)
print(p)
p1 = np.transpose(p)
print(p1)
p2 = p1.T
print(p2)

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

[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
[[0 2 4 6 8]
[1 3 5 7 9]]
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]

Транспонирование массивов можно осуществлять двумя способами. С помощью метода numpy.transpose() и с помощью специального атрибута '.T'.

Метод transpose(), конечно, сложнее. Обратите внимание, в нашем случае столбцы поменялись местами со строками. Но размерность может быть больше двух и тогда не обойтись без понятия осей.

Понятие осей в numpy

Ограничимся пока двумерным и его частным случаем одномерным массивами. Ось (axis) определяет направление вычисления. При axis=0 предполагается, что операции производятся вдоль столбцов, axis=1 - операция производится вдоль строк. Например

#!/usr/bin/python3
import numpy as np
p = np.arange(25).reshape(5, 5)
print(p)
p1 = np.sum(p, axis=0)
print(p1)

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

[[ 0  1  2  3  4]
[ 5  6  7  8  9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
[50 55 60 65 70]

Результат, я думаю, в комментариях не нуждается.

С осями всё, на самом деле, сложнее, так как их количество определяется размерностью массива.

Сортировки массивов в numpy

Не много о сортировке. Есть метод numpy.sort() которому указывается массив и он возвращает новый отсортированный массив, а есть метод у самого созданного массива с тем же названием и он сортирует существует этот же массив, не создавая нового. Будем это помнить.

А теперь примеры

#!/usr/bin/python3
import numpy as np
p = np.array([[2, 8, 9], [7, 5, 4]])
p1=np.sort(p, axis=1)
print(p1)

Результат

[[2 8 9]
[4 5 7]]

Как видим мы получили массив отсортированный по строкам.

Ну а вот как можно упорядочить весь массив с первого до последнего элемента

#!/usr/bin/python3
import numpy as np
p = np.array([[2, 8, 9], [7, 5, 4]])
p.reshape(6).sort()
p.reshape(2, 3)
print(p)

Результат

[[2 4 5]
[7 8 9]]

Мы не закончили с сортировками в numpy и будем ещё к ним возвращаться.

Как видим в numpy всяких возможностей, будем потихоньку их описывать.

Ну, пока всё!

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

- Вас уже начали учить программированию? - Да, сегодня мы общались с ИИ
- Вас уже начали учить программированию? - Да, сегодня мы общались с ИИ

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц