Функция require
Функция require проверяет, соответствует ли входной массив
заданным требованиям к типу данных, порядку байтов
и расположению в памяти. Если массив не соответствует
указанным условиям, функция создает его копию
с необходимыми характеристиками.
Первый параметр arr принимает массив для проверки.
Второй параметр dtype задает требуемый тип данных.
Третий параметр requirements определяет список требований
к расположению массива в памяти.
Синтаксис
np.require(arr, dtype=None, requirements=None)
Пример
Давайте проверим, соответствует ли массив типу данных int32,
и при необходимости преобразуем его:
import numpy as np
arr = np.array([1.5, 2.7, 3.2])
res = np.require(arr, dtype=np.int32)
print(res)
print(res.dtype)
Результат выполнения кода:
[1 2 3]
int32
Пример
Используем требование 'C' для получения
массива с расположением в памяти в стиле C (порядок по строкам):
import numpy as np
arr = np.array([[1, 2], [3, 4]], order='F')
res = np.require(arr, requirements=['C'])
print(res.flags.c_contiguous)
Результат выполнения кода:
True
Пример
Передадим одновременно требования по типу данных и расположению в памяти:
import numpy as np
arr = np.array([[1.1, 2.2], [3.3, 4.4]], order='F')
res = np.require(
arr,
dtype=np.float32,
requirements=['C', 'W']
)
print(res.dtype)
print(res.flags.c_contiguous)
print(res.flags.writeable)
Результат выполнения кода:
float32
True
True
Пример
Если массив уже удовлетворяет требованиям, функция вернет исходный массив без копирования:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.require(arr, dtype=np.int64, requirements=['C'])
print(res is arr)
print(arr.base is None)
Результат выполнения кода:
True
True
Смотрите также
-
функцию
asarray,
которая преобразует входные данные в массив -
функцию
ascontiguousarray,
которая возвращает непрерывный массив в стиле C -
функцию
asfortranarray,
которая возвращает непрерывный массив в стиле Fortran -
функцию
copy,
которая создает копию массива с указанным порядком следования элементов