Почему суммирование комплекса и значения np.float64 дает комплексное значение вместо значения np.complex128, предложенноPython

Программы на Python
Anonymous
Почему суммирование комплекса и значения np.float64 дает комплексное значение вместо значения np.complex128, предложенно

Сообщение Anonymous »

Я читаю о числовом продвижении в numpy. Я копирую основной график здесь:
Изображение
На основе графика следующее объяснение:

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

и учитывая тот факт, что нам нужно выбрать поле с желтой рамкой при объединении целочисленного значения с чем-то другим (см. текст в правом верхнем углу графика), мы можем ожидать, что тип вывода следующих операций будет np.complex128. Я их протестировал, ожидания оправдались.

Код: Выделить всё

complex(1+1j)+np.int8(1.0)  # = np.complex128(2+1j)
complex(1+1j)+np.int16(1.0) # = np.complex128(2+1j)
complex(1+1j)+np.int32(1.0) # = np.complex128(2+1j)
complex(1+1j)+np.int64(1.0) # = np.complex128(2+1j)
Для этих операций, приведенных ниже, мы можем ожидать, что результат будет иметь тип np.complex64 (теперь мы находимся над пунктирной линией, поэтому нет необходимости придерживаться полей с желтой рамкой). И снова ожидания оправдались.

Код: Выделить всё

complex(1+1j)+np.float16(1.0) # = np.complex64(2+1j)
complex(1+1j)+np.float32(1.0) # = np.complex64(2+1j)
Однако мне непонятно почему

Код: Выделить всё

complex(1+1j)+np.float64(1.0) # returns (2+1j), ie a Python scalar, not a np.complex128 value
возвращает (2+1j) сложного типа. complex — это скаляр Python, а не numpy dtype. Основываясь на графике, я ожидал, что результат будет типа np.complex128.
Почему суммирование комплексного значения и значения np.float64 дает комплексное значение вместо значения np.complex128?
В настоящее время я могу придумать правдоподобное объяснение: 1) Я делаю что-то неправильно, т. е. не проверяю то, что я думаю, что тестирую 2) я неправильно понимаю график или в нем есть больше нюансов, чем я сейчас знаю 3) график неправильный (крайне маловероятно).

Вернуться в «Python»