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ведет себя подобно значению Python0.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