Spec-Zone.ru › NumPy 2.0

numpy.ufunc.resolve_dtypes

метод

ufunc.resolve_dtypes(dtypes, *, signature=None, casting=None, reduction=False)

Определяет типы данных, которые NumPy будет использовать для операции. Возвращаются типы данных как входных, так и выходных значений, которые могут отличаться от предоставленных.

Примечание

Эта функция всегда применяет правила NEP 50, так как ей не предоставляются фактические значения. Типы Python int, float, и complex поэтому ведут себя слабо и должны передаваться для «бестипового» входного Python.

Параметры:
dtypesкортеж типов данных, None или литеральные int, float, complex

Входящие типы данных для каждого операнда. Выходные операнды могут быть None, что указывает на необходимость определения типа данных.

signatureкортеж типов данных или None, необязательно

Если задан, то он обеспечивает точные типы данных (классы) конкретного операнда. Аргумент ufunc dtype эквивалентен передаче кортежа, в котором заданы только выходные типы данных.

casting{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’}, необязательно

Режим приведения типов при необходимости приведения. Это идентично режимам приведения типов вызова ufunc.

reductionбулево

Если задан, то определение предполагает выполнение операции сокращения, которая немного изменяет правила повышения и определения типа. dtypes обычно представляет собой что-то вроде (None, np.dtype("i2"), None) для сокращений (первый входной параметр также является выходным).

Примечание

По умолчанию режим приведения типов — «same_kind», однако, начиная с NumPy 1.24, NumPy использует «unsafe» для сокращений.

Возвращаемое значение:
dtypesкортеж типов данных

Типы данных, которые NumPy будет использовать для вычисления. Обратите внимание, что типы данных могут не совпадать с переданными (необходимо приведение типов).

Примеры

Эта API требует передачи типов данных, определим их для удобства:

>>> int32 = np.dtype("int32")
>>> float32 = np.dtype("float32")

Типичный вызов ufunc не передает выходной тип данных. numpy.add имеет два входных параметра и один выходной, поэтому оставьте выходной параметр None (не задан):

>>> np.add.resolve_dtypes((int32, float32, None))
(dtype('float64'), dtype('float64'), dtype('float64'))

В цикле используется «float64» для всех операндов (включая выходной), первый входной параметр будет преобразован.

resolve_dtypes поддерживает «слабую» обработку скаляров Python путем передачи int, float, или complex:

>>> np.add.resolve_dtypes((float32, float, None))
(dtype('float32'), dtype('float32'), dtype('float32'))

Где Python float ведет себя подобно значению Python 0.0 в вызове ufunc. (См. NEP 50 для подробностей.)

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.ufunc.resolve_dtypes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API