numpy.result_type
- numpy.result_type(*arrays_and_dtypes)
-
Возвращает тип, который получается при применении правил повышения типа NumPy к аргументам.
Повышение типа в NumPy работает аналогично правилам в таких языках, как C++, с некоторыми незначительными отличиями. Когда используются как скаляры, так и массивы, тип массива имеет приоритет, и фактическое значение скаляра учитывается.
Например, вычисление 3*a, где a – массив 32-битных чисел с плавающей точкой, интуитивно должно давать 32-битный результат с плавающей точкой. Если 3 – 32-битное целое число, правила NumPy указывают, что оно не может быть без потерь преобразовано в 32-битное число с плавающей точкой, поэтому типом результата должно быть 64-битное число с плавающей точкой. Исследуя значение константы '3', мы видим, что оно помещается в 8-битное целое число, которое может быть без потерь преобразовано в 32-битное число с плавающей точкой.
- Параметры
-
- arrays_and_dtypesсписок массивов и типов данных
-
Операнды некоторой операции, тип результата которой необходим.
- Возвращает
-
- outdtype
-
Тип результата.
См. также
Примечания
Введено в версии 1.6.0.
Используемый алгоритм следующий.
Категории определяются путем проверки, является ли максимальный тип всех массивов и скаляров булевым, целым (int/uint) или с плавающей точкой (float/complex).
Если присутствуют только скаляры или максимальная категория скаляров выше максимальной категории массивов, типы данных комбинируются с помощью
promote_typesдля получения возвращаемого значения.В противном случае,
min_scalar_typeвызывается для каждого массива, а полученные типы данных объединяются с помощьюpromote_typesдля получения возвращаемого значения.Множество целочисленных значений не является подмножеством значений uint для типов с одинаковым количеством битов, что не отражается в
min_scalar_type, но обрабатывается как специальный случай вresult_type.Примеры
>>> np.result_type(3, np.arange(7, dtype='i1')) dtype('int8')>>> np.result_type('i4', 'c8') dtype('complex128')>>> np.result_type(3.0, -2) dtype('float64')
© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.result_type.html