Курс 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. Модуль os в Python: работа с файлами
  2. Сортировка элементов с OrderedDict
  3. Методы classmethod и staticmethod
  4. Асинхронное программирование с asyncio
  5. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  6. Оператор break в Python
  7. Сравнение строк в Python
  8. Принципы программирования
  9. Библиотека wikipedia для Python
  10. Проверка типов с помощью isinstance
  11. Оператор объединения словарей
  12. Использование html-скриптов в Jupyter Notebook
  13. Генерация случайных чисел в Python
  14. Объединение списков с использованием itertools.chain
  15. Python Enumerate
  16. Создание списка через цикл
  17. Асинхронное выполнение задач в Python
  18. Создание словарей в Python
  19. Проверка вхождения подстроки
  20. Обратный список чисел
  21. Профилирование с Pandas
  22. Извлечение новостей с newspaper3k
  23. Удаление URL-адресов в Python
  24. Перетасовка списков в Python
  25. Нахождение пересечения множеств
  26. Работа с collections.Counter
  27. Создание списка через итерацию
  28. Проверка условий в Python
  29. Переопределение метода __or__()
  30. Поиск индекса элемента в списке
  31. Обход дочерних элементов BeautifulSoup
  32. Основные функции и модули Python
  33. Получение обратного списка чисел
  34. Установка и загрузка Instaloader
  35. Проверка памяти объекта
  36. Оптимизация памяти с __slots__
  37. Роль ключевого слова self
  38. Оператор walrus в Python
  39. Итерация по коллекции в Python
  40. Функции range() в Python
  41. Обязательные аргументы в Python
  42. Функция sleep() в Python
  43. Генерация фальшивых данных с Faker
  44. Изменения в обработке логических значений
  45. Метод setitem в Python
  46. Секреты Python

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