Курс 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. Поток данных в Python
  3. Оболочка Python
  4. Библиотека sh: использование команд bash в Python
  5. Проверка наличия элемента в списке
  6. Настройка шрифта и цвета в Tkinter
  7. Перемещение и удаление файлов в Python
  8. Названия столбцов в Python таблицах
  9. IPython и Jupyter Notebook: руководство
  10. Протокол управления контекстом
  11. Метод join() для объединения элементов в строку.
  12. Декораторы в Python
  13. Сортировка в Python
  14. Получение атрибутов и методов класса
  15. Использование эмодзи в Python
  16. Python union() функция — объединение множеств
  17. Метод invert для побитового отрицания
  18. Удаление эмодзи с помощью pandas
  19. None в Python: использование и особенности
  20. Сравнение def и lambda функций в Python
  21. Однострочники Python
  22. Класс-оболочка для словарей
  23. Эффективная конкатенация строк в Python
  24. Глубокое копирование объектов
  25. Возврат нескольких значений из функции
  26. Работа с процессами в Python
  27. Добавление вложенных списков
  28. Подсчет элементов в Python
  29. Объединение объектов в Python
  30. Функции в Python
  31. Поиск наиболее частого элемента в списке
  32. Метод __iand__ для пользовательских классов
  33. Отправка HTTP-запросов с User-Agent
  34. Сортировка данных с лямбда-функциями
  35. Работа с парами ключ-значение
  36. Инверсия списка и строки
  37. Проверка подстроки в строке
  38. Метод join() для объединения строк
  39. Сглаживание списка
  40. Оператор «and» в Python
  41. Использование метода lower()
  42. Библиотека itertools: объединение списков
  43. Применение функции map() с лямбда-функциями
  44. Работа с типами данных в Python с помощью pydantic.
  45. Роль object и type в Python
  46. Реверс строки в Python
  47. Объединение словарей в Python
  48. Создание и удаление объектов
  49. Форматирование строк в Python
  50. Подписка на @SelectelNews

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