machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Python для науки о данных: часть 2

Дата публикации Aug 1, 2018

ВЧасть 1из серии Python for data science мы рассмотрели основные встроенные функции для численных вычислений в Python. В этой части мы рассмотрим библиотеку Numpy.

Numpy - это фундаментальный пакет для научных вычислений на Python. Он обеспечивает поддержку больших многомерных массивов, а также математические функции высокого уровня для работы с этими массивами.

Отлично, давайте посмотрим, как использовать библиотеку Numpy для базовых манипуляций с массивами.

Библиотека Numpy

Во-первых, нам нужно импортировать numpy в Python.

import numpy as np

Давайте создадим пустой массив.

np.array([1,2,3])

Выход: массив ([1, 2, 3])

Теперь давайте создадим многомерный массив.

a = np.array([[1,2,3],[4,5,6]]) 
a

Вывод: массив ([[1, 2, 3],
[4, 5, 6]])

Проверьте форму (строки и столбцы массива).

a.shape

Выход: (2, 3)

Создайте равномерно распределенный массив от 1 до 30 с разницей 2.

b = np.arange(1,30,2)
b

Вывод: массив ([1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29])

Измените вышеуказанный массив в желаемую форму.

b.reshape(5,3)

Вывод: массив ([[1, 3, 5],
[7, 9, 11],
[13, 15, 17],
[19, 21, 23],
[25, 27, 29]])

Создайте равномерно распределенный список между интервалами 1 и 5. (Найдите минутку, чтобы понять разницу между «linspace» и «arange»)

c = np.linspace(1,5,20)
c

Выход: массив ([1., 1.21052632, 1.42105263, 1.63157895, 1.84210526,
2.05263158, 2.26315789, 2.47368421, 2.68421053, 2.89473684,
3.10526316, 3.31578947, 3.52631579, 3.73684211, 3.94736842,
4.15789474, 4.36842105, 4.57894737, 4.78947368, 5.])

Теперь измените форму массива на месте (функция «resize» изменяет форму массива на месте, в отличие от «reshape»)

c.resize(5,4)
c

Вывод: массив ([[1., 1.21052632, 1.42105263, 1.63157895],
[1.84210526, 2.05263158, 2.26315789, 2.47368421],
[2.68421053, 2.89473684, 3.10526316, 3.31578947],
[3.52631579, 3.73684211, 3.94736842, 4.15789474],
[4.36842105, 4.57894737, 4.78947368, 5.]])

Создайте массив со всеми элементами как едиными.

d = np.ones((2,2))
d

Вывод: массив ([[1., 1.],
[1., 1.]])

Создайте массив, заполненный нулями.

e = np.zeros((3,3))
e

Вывод: массив ([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])

Создать диагональную матрицу с диагональными значениями = 1

f = np.eye(2)
f

Вывод: массив ([[1., 0.],
[0., 1.]])

Извлекать только диагональные значения из массива.

np.diag(f)

Вывод: массив ([1., 1.])

Создать массив, состоящий из повторяющегося списка

g = np.array([1,2,3]*5)
g

Вывод: массив ([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])

Теперь повторяем каждый элемент массива n раз, используя функцию repeat.

np.repeat([1,2,3],3)

Вывод: массив ([1, 1, 1, 2, 2, 2, 3, 3, 3])

Создайте два массива желаемой формы, заполненных случайными значениями от 0 до 1.

g = np.random.rand(2,3)
print(g)
h = np.random.rand(2,3)
print(h)

Выход :

[[0.61631842 0.28352987 0.56174714]
[0.54302204 0.47257786 0.21923943]]

[[0.57233679 0.22981962 0.15870184]
[0.52548056 0.81495971 0.22014512]]

Стек двух вышеупомянутых массивов, созданных вертикально

i = np.vstack([h,g])
i

Выход :

массив ([[0,57233679, 0,22981962, 0,15870184],
[0,52548056, 0,81495971, 0,22014512],
[0,61631842, 0,28352987, 0,56174714],
[0.54302204, 0.47257786, 0.21923943]])

Теперь давайте сложим их горизонтально.

j = np.hstack([h,g])
j

Выход :

массив ([[0,57233679, 0,22981962, 0,15870184, 0,61631842, 0,28352987,
0.56174714],
[0,52548056, 0,81495971, 0,22014512, 0,54302204, 0,47257786,
0.21923943]])

Отлично, теперь давайте выполним некоторые операции с массивами. Сначала давайте создадим два случайных массива

k = np.random.rand(2,2)
l = np.random.rand(2,2)
print(k)
print(l)

Выход :

[[0.02430146 0.14448542]
[0.54428337 0.40332494]]

[[0.77574886 0,08747577]
[0.51484157 0.92319888]]

Давайте сделаем поэлементное дополнение.

m = k + l
m

Вывод: массив ([[0.80005032, 0.23196118],
[1.05912494, 1.32652381]])

Элемент мудрого вычитания.

n = k-l
n

Выход: массив ([[- 0,75144739, 0,05700965],
[0.02944179, -0,51987394]])

Давайте приведем каждый элемент в степень 2.

p = k**2
p

Вывод: массив ([[0.00059056, 0.02087604],
[0.29624438, 0.162671]])

Теперь вместо поэлементной операции давайте выполним скалярное произведение двух массивов k и l.

q = k.dot(l)
q

Вывод: массив ([[0,09323893, 0,13551456],
[0.62987564, 0.41996073]])

Давайте создадим новый массив и транспонируем его.

a = np.array([[1,2],[3,4]])
a

Выход :

массив ([[1, 2],
[3, 4]])

a.T

Выход :

массив ([[1, 3],
[2, 4]])

Теперь проверьте тип данных элементов в массиве.

a.dtype

Вывод: dtype (‘int32’)

Измените тип данных массива.

b = a.astype('f')
b.dtype

Вывод: dtype (‘float32’)

Теперь давайте посмотрим на некоторые математические функции в массиве, начиная с суммы массива.

c = np.array([1,2,3,4,5])
c.sum()

Выход: 15

Максимум элементов массива.

c.max()

Выход: 5

Среднее из элементов массива

c.mean()

Выход: 3

Теперь давайте найдем индекс максимального значения массива.

c.argmax()

Выход: 4

c.argmin()

Выход: 0

Создать массив, состоящий из квадрата первых десяти целых чисел

d = np.arange(10)**2
d

Вывод: массив ([0, 1, 4, 9, 16, 25, 36, 49, 64, 81], dtype = int32)

Доступ к значениям в приведенном выше массиве с помощью индекса.

d[2]

Выход: 4

d[1:5]

Вывод: массив ([1, 4, 9, 16], dtype = int32)

Используйте отрицательный знак для доступа к переменным в обратном порядке.

d[-1:]

Выход: массив ([81], dtype = int32)

Теперь доступ к определенным элементам массива зависит от размера шага.

d[1:10:2] #d[start:stop:stepsize]

Вывод: массив ([1, 9, 25, 49, 81], dtype = int32)

Создать многомерный массив

e = np.arange(36)
e.resize(6,6)
e

Вывод: массив ([[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, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35]])

Доступ ко второму ряду и третьему столбцу

e[1,2]

Выход: 8

Доступ ко 2-й строке и столбцам с 3 по 7. Обратите внимание, что нумерация строк и столбцов начинается с 0

e[1, 2:6]

Вывод: массив ([8, 9, 10, 11])

Выбрать все строки до 2-й строки и все столбцы, кроме последнего

e[:2,:-1]

Вывод: массив ([[0, 1, 2, 3, 4],
[6, 7, 8, 9, 10]])

Выберите значения из массива больше 20.

e[e>20]

Вывод: массив ([21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35])

Назначьте значение элементов массива как 20, если значение элемента больше 20.

e[e>20] = 20
e

Вывод: массив ([[0, 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 20, 20, 20],
[20, 20, 20, 20, 20, 20],
[20, 20, 20, 20, 20, 20]])

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

f = e.copy()
f

Вывод: массив ([[0, 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 20, 20, 20],
[20, 20, 20, 20, 20, 20],
[20, 20, 20, 20, 20, 20]])

Создайте массив с набором случайных целых чисел от 1 до 10. Укажите массив, имеющий форму 4 * 4.

g = np.random.randin(1,10,(4,4))
g

Вывод: массив ([[9, 7, 1, 4],
[1, 4, 3, 6],
[2, 5, 5, 1],
[2, 2, 9, 9]])

Отлично, мы смотрели на создание, доступ и манипулирование массивами в Numpy. вследующая часть серии, мы будем смотреть на библиотеку, которая построена на библиотеке Numpy - Pandas. Pandas - это библиотека, которая значительно упрощает манипулирование данными и их анализ в Python. Он предлагает структуры данных и операции для числовых таблиц и временных рядов.


ПодключитьсяLinkedInи проверьте Github (ниже) для полной тетради.

rohanjoseph93 / Python-для-данных-наука

Python-для-data-science - Изучите науку данных с Python

github.com

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map