Курс 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. Метод eq для сравнения объектов
  3. Метод pos в Python
  4. Метод join() для объединения строк
  5. Обновление данных через PUT запрос
  6. Переопределение метода __or__()
  7. Закрытие файла в Python
  8. JMESPath в Python
  9. Удаление элементов по срезу
  10. Использование двоеточия в Python
  11. Особенности запятых в Python
  12. Хранение переменных в Python.
  13. Работа с deque из collections
  14. Лямбда-функции в цикле
  15. Игра «Виселица» на Python
  16. Перевернуть список в Python
  17. Логирование с Logzero
  18. Слияние словарей в Python 3.9
  19. Модуль future Python
  20. Получение списка кортежей из словаря
  21. Работа с IP-адресами в Python
  22. Модуль subprocess: запуск внешних команд
  23. Удаление элементов из списка в Python.
  24. Удаление ключа из словаря в Python
  25. Python Enumerate
  26. Деление в Python
  27. Генератор списка с условием if
  28. Оптимизация поиска в словарях
  29. Инициализация переменных
  30. Расчет времени выполнения
  31. Метод bool() в Python
  32. Генераторы в Python
  33. Сравнение объектов в Python
  34. Работа с базами данных SQLite
  35. Оператор «or» в Python
  36. Метод count() для списков
  37. Объединение строк с помощью метода join
  38. Генераторы в Python
  39. Функция pow() — возвести число в степень
  40. Генераторы списков в Python
  41. Оператор == в Python
  42. Возврат нескольких значений из функции
  43. Работа с комплексными числами
  44. Объединение словарей в Python
  45. CSV строка разделение в Python
  46. SciPy: широкий функционал для математических операций
  47. Тестирование с unittest

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