Курс Python → Работа с массивами в Numpy

Библиотека Numpy предоставляет возможность работать с массивами данных, и при этом важно понимать разницу между копиями и представлениями. Когда мы присваиваем массив переменной, мы передаем не сам массив, а ссылку на него. Это означает, что изменения в новой переменной могут повлиять на исходный массив. Такая же ситуация возникает и при работе с массивами в Numpy.

Чтобы избежать нежелательных изменений в исходных данных, в Numpy существует два подхода: представление и глубокое копирование. Представление — это поверхностное копирование, которое позволяет изменять форму массива без изменения данных. Однако, при изменении данных в представлении, данные в исходном массиве также изменятся. Представление можно получить, например, через срез массива.

Глубокое копирование, в свою очередь, создает полностью новый объект, который не связан с исходным массивом. Новый массив хранится в отдельной ячейке памяти и изменения в нем не затронут исходный массив. Этот подход подходит в случаях, когда требуется полная независимость нового массива от исходного.

# Примеры кода на Python с использованием Numpy
import numpy as np

# Создание исходного массива
arr = np.array([1, 2, 3, 4, 5])

# Представление массива через срез
view_arr = arr[1:4]

# Изменение данных в представлении
view_arr[0] = 10

# Вывод измененного представления и исходного массива
print("Измененное представление:", view_arr)
print("Исходный массив:", arr)

# Глубокое копирование массива
deep_copy_arr = arr.copy()

# Изменение данных в глубокой копии
deep_copy_arr[0] = 100

# Вывод измененной глубокой копии и исходного массива
print("Измененная глубокая копия:", deep_copy_arr)
print("Исходный массив:", arr)

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Присоединение элементов коллекции
  2. Работа с Path в Python
  3. Работа с IP-адресами в Python
  4. Преобразование чисел в Python
  5. Работа с модулем bisect
  6. Счетчик в Python: most_common()
  7. Метод __ixor__ для побитового исключающего ИЛИ
  8. Метод join() для объединения элементов строки
  9. Функции высшего порядка в Python
  10. Работа с аргументами командной строки в Python
  11. Объединение списков с помощью zip
  12. Создание namedtuple списком полей
  13. Логические операторы в Python
  14. Метод difference_update() — разность множеств
  15. Частичное совпадение ввода
  16. Особенности множеств в Python
  17. Работа с байтовыми строками в Python
  18. Преобразование текста в речь с Python
  19. Beautiful Soup — извлечение данных из HTML
  20. Переопределение метода len
  21. Извлечение новостей с помощью newspaper3k
  22. Поиск частого элемента
  23. Оператор объединения словарей
  24. Обход элементов в Python
  25. Расчет времени выполнения
  26. Использование обратной косой черты в f-строках
  27. Контроль точности вывода чисел
  28. Множества и frozenset
  29. Повторение и перенос строки
  30. Создание новых списков в Python
  31. Сортировка с параметром key
  32. Метод rxor для операции побитового исключающего «или»
  33. Разделение строк в Python
  34. Сериализация данных в JSON с помощью json.dumps
  35. Сохранение Unicode в JSON
  36. Работа с утверждениями в Python
  37. Создание коллекций из выражения-генератора
  38. Декоратор Ajax required
  39. Распаковка элементов массива
  40. Python 3.12: переиспользование кавычек
  41. Работа с файловой системой в Python
  42. Проверка типов с использованием isinstance
  43. Нахождение пересечения множеств
  44. Частичное совпадение пользовательского ввода в Python 3.10

Marketello читают маркетологи из крутых компаний