Курс 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. Функция product() из itertools
  2. Метод setdefault() в Python
  3. Динамическая типизация в Python
  4. Создание списков в Python
  5. Функции высшего порядка в Python
  6. Работа с асинхронными задачами в Python
  7. Метод classmethod
  8. Проверка типа данных
  9. Создание namedtuple списком полей
  10. Итерация по итерируемым объектам
  11. Определение относительного пути
  12. Принцип одной функции
  13. Многострочные комментарии в Python
  14. Нахождение отличий в списках
  15. Асинхронное выполнение задач в Python
  16. Комментарии в Python
  17. Искажение имен в Python
  18. Изменение элемента списка
  19. Запрос пароля с помощью getpass
  20. Создание новых списков в Python
  21. Приближение чисел в Python
  22. Метод join() с набором
  23. Обмен значений переменных в Python
  24. Оператор деления для класса Rational
  25. Замена символов в Python
  26. Сокращение ссылок с pyshorteners
  27. Отправка POST запроса на сервер.
  28. Функция rsplit() в Python
  29. Работа с дробями в Python
  30. Освобождение памяти в Python
  31. Использование эмодзи в Python
  32. Работа с файлами в Python
  33. Удаление первого элемента списка
  34. Добавление Progressbar в Python
  35. Оценка точности модели
  36. Вывод баннеров
  37. Принципы программирования
  38. Методы обработки строк в Python
  39. Использование html-скриптов в Jupyter Notebook
  40. Запуск файлового сервера
  41. Библиотека itertools: объединение списков
  42. Копирование словарей и списков в Python
  43. Мониторинг памяти с Pympler
  44. Переопределение метода divmod
  45. Работа с географическими данными.
  46. Асинхронное программирование с asyncio
  47. Списковое включение в Python
  48. Создание .exe файла с pyinstaller
  49. Присоединение элементов коллекции

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