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_dtypeslist of arrays and dtypes -
Операнды некоторой операции, тип результата которой требуется.
-
- Возвращает
-
-
outdtype -
Тип результата.
-
См. также
-
dtype, promote_types, min_scalar_type,can_cast
Примечания
Введено в версии 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.result_type.html