Курс 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. Работа с getopt
  2. Метод clear для коллекций
  3. Особенности запятых в Python
  4. Подсказки типов в Python
  5. Профилирование кода
  6. Создание итератора
  7. Декораторы в Python
  8. PrettyTable: создание таблицы
  9. Ускорение обработки данных с %autoawait
  10. Метод __irshift__ для Python
  11. Генератор списка в Python
  12. Создание треугольника Паскаля
  13. Работа с zip-архивами в Python
  14. Безопасный доступ к значениям словаря
  15. Оператор «and» в Python
  16. Вызов функций по строке в Python.
  17. Капитализация строк
  18. Операторы присваивания в Python
  19. Объединение объектов в Python
  20. Создание списков в Python
  21. Удаление элементов по срезу
  22. Применение функции map() с лямбда-функциями
  23. Python: отсутствие точек с запятыми
  24. Аннотации типов в Python
  25. Разделение строки с помощью re.split()
  26. Преобразование чисел в восьмеричную строку
  27. Уникальные значения из списка
  28. Получение размера объекта с sys.getsizeof()
  29. Работа с эмодзи в Python
  30. Принцип одной функции
  31. Операции с датами в Python
  32. Печать комбинаций в Python с Itertools
  33. Операция += для списков
  34. Создание пользовательской коллекции в Python
  35. Генерация случайных чисел в Python
  36. Сортировка с помощью key
  37. Извлечение аудио из видео
  38. %pinfo: получение информации об объекте
  39. Прокачанный трейсинг ошибок
  40. Расчет времени выполнения
  41. Конвертация коллекций в Python.
  42. Основы слова
  43. Метод bool() в Python

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