Курс 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. Хранение переменных в Python.
  2. Преобразование числа в список цифр
  3. Создание уникального множества
  4. Класс Counter() для подсчета элементов
  5. Получение текущего времени в Python
  6. Доступ к локальным переменным
  7. Построение графиков в терминале с bashplotlib
  8. Создание GUI с Tkinter: Entry
  9. Генерация случайных чисел Python
  10. Оформление кода по PEP 8
  11. Работа с итераторами через срезы
  12. Область видимости переменных
  13. Генерация случайных чисел в Python
  14. Список переменных в Python
  15. Создание новых списков в Python
  16. Введение в PyTorch
  17. Многострочные строки в Python
  18. Отправка поздравлений по дню рождения
  19. Генераторы и сеты в Python
  20. Мониторинг памяти с Pympler
  21. Конкатенация строк в Python
  22. Добавление Progressbar в Python
  23. Лимиты на ресурсы Python
  24. Работа с WindowsPath()
  25. История Python
  26. Необязательные аргументы в Python
  27. Функция pow() — возвести число в степень
  28. Простой калькулятор Python
  29. Конкатенация списков в Python
  30. Разделение строки в Python
  31. Метод matmul для умножения матриц
  32. Лямбда-функции в Python
  33. Функция eval() в Python
  34. Циклы for в Python
  35. Добавление элементов в список
  36. Проверка на палиндром
  37. Concrete Paths — метод .with_suffix()
  38. Итерация по копии коллекции
  39. Удаление специальных символов с помощью re.sub
  40. Модуль xkcd: добавление юмора в Python
  41. Список методов и атрибутов
  42. IPython и Jupyter Notebook: руководство
  43. Проверка запуска скрипта или импорта модуля
  44. Python: изменяемые и неизменяемые коллекции

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