РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
427 of 541 menu

Атрибут data

Атрибут data объекта ndarray возвращает представление сырого буфера данных массива в виде объекта memoryview или указателя на данные в зависимости от контекста. Этот атрибут позволяет получить прямой доступ к памяти, где хранятся элементы массива, без копирования.

Значение атрибута зависит от того, является ли массив «own-data» (владеет своими данными) или представляет собой представление (view) другого массива. В случае представления data указывает на те же данные, что и исходный массив.

Синтаксис

arr.data

Пример

Давайте получим объект memoryview для массива чисел:

import numpy as np arr = np.array([1, 2, 3, 4, 5]) res = arr.data print(res)

Результат выполнения кода:

<memory at 0x7f8b4a2c1b40>

Пример

Атрибут data позволяет получить доступ к сырым байтам массива через срез memoryview:

import numpy as np arr = np.array([10, 20, 30, 40, 50]) data_view = arr.data # Получаем первые 4 байта (один элемент int64) first_bytes = data_view[:4] print(first_bytes)

Результат выполнения кода (байты могут отличаться в зависимости от архитектуры и порядка байтов):

b'\n\x00\x00\x00\x00\x00\x00\x00'

Пример

Покажем, что для представления (view) массива data указывает на те же данные, что и у исходного массива. Изменим элемент через представление и проверим исходный массив:

import numpy as np original = np.array([1, 2, 3, 4]) view = original[1:3] print("original data:", original.data) print("view data:", view.data) print("original:", original) print("view:", view) # Изменяем элемент через представление view[0] = 99 print("after change original:", original)

Результат выполнения кода:

original data: <memory at 0x7f8b4a2c1b40> view data: <memory at 0x7f8b4a2c1bc0> original: [1 2 3 4] view: [2 3] after change original: [1 99 3 4]

Пример

Атрибут data может быть использован для низкоуровневой работы с байтами, например, для копирования данных в другой буфер без использования методов NumPy:

import numpy as np arr = np.array([5, 10, 15, 20]) data_bytes = arr.data.tobytes() print("Bytes:", data_bytes) # Восстанавливаем массив из байтов restored = np.frombuffer(data_bytes, dtype=arr.dtype) print("Restored:", restored)

Результат выполнения кода:

Bytes: b'\x05\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00' Restored: [ 5 10 15 20]

Смотрите также

  • атрибут base,
    который указывает на объект, чьи данные использует массив
  • атрибут byteswap,
    который меняет порядок байтов в данных массива
  • метод tobytes,
    который преобразует массив в байтовую строку
  • метод copy,
    который создает независимую копию массива с новым буфером данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить