Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Использование библиотеки numpy. Ввод и вывод массивов

Оглавление

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

Начала использования библиотеки numpy на языке Python

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

Установка библиотеки numpy

Начну с того, что установка библиотеки numpy осуществляется обычным образом

pip3 install numpy (или в Windows pip install numpy)

Соотвественно подключение библиотеки

import numpy

или как часто пишут

import numpy as np

Вот в общем то и всё, можно начинать работать.

Задание массива numpy и простой вывод

Надо сказать, что в отличие от списков массивы numpy:

  1. Однородны, т.е. состоят из элементов одного типа, в отличие от стандартных списков. Python.
  2. Многомерны, т.е. их размерность заложена в их свойства изначально. И опять же они этим отличаются от списков, многомерность которых фиктивная и основывается на том, что элементом писка также может быть список.

Как вариант массивы numpy задаются из списка (кортеж тоже сгодится).

#!/usr/bin/python3
import numpy as np
arr = np.array([3.12, 1.22, 6.77, 4.44])
print(arr)
arr[0] = 5.44
print(arr)

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

[3.12 1.22 6.77 4.44]
[5.44 1.22 6.77 4.44]

Какие выводы можнос сделать из данной программы?

  • Ну, как мы видим print хорошо себе понимает массивы numpy;
  • Список автоматически переходит в одномерный массив numpy;
  • Элементы массива numpy можно легко изменять используя квадратные скобки, нумерация элементов массива идёт с 0.

Размерность массивов numpy

Начну с того, что в numpy есть вообще нульмерные массивы. И ведет они себе в основном как обычные переменные заданного типа.

#!/usr/bin/python3
import numpy as np
arr = np.array(10)
arr = arr**3
print(arr)

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

1000

Т.е. arr в программе ведёт себя как обычная переменная целого типа.

Легко можно создавать и массивы больших размерностей. Выше мы уже создавали одномерный массив. Также легко создавать и n-мерные массивы. Ниже создаётся двумерный массив.

#!/usr/bin/python3
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)

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

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

Для 3-мерного массива также всё просто

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

Размерность массива можно определить с помощью свойства ndim, например

print(arr.ndim)

Тип элементов массива можно определить с помощью свойства dtype.

print(arr.dtype)

Для последнего примера результат будет int64.

Важным методом - свойством является shape. Свойство содержит кортеж, содержащий размеры массива. С помощью него можно менять размерность. Рассмотрим пример.

#!/usr/bin/python3
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
print(arr.shape)
arr1 = arr.flatten()
arr.shape = (6)
print(arr1)
print(arr)
print(arr1.shape)
print(arr.shape)
arr.shape = (3, 2)
print(arr)
print(arr.size)

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

[[1 2 3]
[4 5 6]]
(2, 3)
[1 2 3 4 5 6]
[1 2 3 4 5 6]
(6,)
(6,)
[[1 2]
[3 4]
[5 6]]
6

Пояснение к программе

Как видим, shape выдаёт размерность массива, но с помощью shape мы можем менять размерность. Для создания одномерного массива кортеж должен содержать просто количество элементов массива. Создать одномерный массив можно и просто методом flatten(). Наконец количество элементов в любом массиве можно определить с помощью свойства size.

Следует отметить, что в numpy есть важная функция reshape(). По своему воздействию она похожа на свойство shape. Но есть отличие. Она создаёт новый массив, а shape просто меняет существующий без копирования в новую область памяти. Но к функции reshape() мы ещё вернёмся.

Вывод (перебор) элементов массива numpy

Можно по-разному перебирать элементы массивов в библиотеке numpy. Мы уже знаем, что функция print() выводит все элементы массива. Ниже в программе показано еще три способа перебора

#!/usr/bin/python3
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
[print(arr[i][j], end=' ') for j in range(3) for i in range(2)]
print()
[print(it, end=' ') for it in np.nditer(arr)]
print()
[[print(it2, end=' ') for it2 in it1] for it1 in arr]
print()

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

1 4 2 5 3 6  
1 2 3 4 5 6  
1 2 3 4 5 6

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

Следующая статья о numpy

Ну, пока всё!

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

Таких массивов данных вы ещё и не видели
Таких массивов данных вы ещё и не видели