Курс 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. Метод join() для объединения элементов строки
  3. Работа с Path в Python
  4. Улучшение читаемости кода в Python
  5. Метод __irshift__ для Python
  6. Метод count в Python: почему count(», ») возвращает 4?
  7. Codecademy в Telegram
  8. Профилирование кода на Python
  9. Отношения подклассов в Python
  10. Операции с датами в Python
  11. Скачать видео с YouTube
  12. Контекстный менеджер в Python
  13. Логирование с Logzero
  14. Оператор del в Python
  15. Concrete Paths в Python
  16. Создание пользовательской коллекции в Python
  17. Python: Splat-оператор и splatty-splat
  18. Метод eq для сравнения объектов
  19. Регистрация на TenChat
  20. Импорт модуля из другого каталога
  21. Вызов внешних программ в Python с помощью sh
  22. F-строки в Python 3.8
  23. Оператор «or» в Python
  24. Функция с **kwargs в Python
  25. Переопределение метода sub
  26. Объединение словарей в Python
  27. Асинхронный код в Python
  28. Удаление ключа из словаря в Python
  29. Использование type hints
  30. Цикл for в Python
  31. Метод difference_update() — разность множеств
  32. Метод clear для коллекций
  33. Оптимизация строк в Python
  34. Методы split() и join() — Python строк.
  35. Оператор морж в Python 3.8
  36. Работа с функцией next() в Python
  37. Создание словаря и множества
  38. Операции с числами в Python
  39. Обработка исключений в Python
  40. Принципы Zen Python
  41. Defaultdict в Python
  42. Работа с комбинациями в Python.
  43. Вывод символов строки в Python
  44. Удаление URL-адресов в Python

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