Предположим, я определил константу dtype float64
и массив из dtype float32
:
c = np.arccos(-1)
ones = np.array([1,1,1], dtype='float32')
print(c.dtype, ones.dtype)
float64 float32
Если я умножу скаляр на все массив, я получаю результат с dtype float32
:
result_array = c*ones
print(result_array, result_array.dtype)
[3.1415927 3.1415927 3.1415927] float32
Однако, если я умножу скаляр только на первый элемент, я получу результат dtype float64
:
result_scalar = c*ones[0]
print(result_scalar, result_scalar.dtype)
3.141592653589793 float64
Как выполнить умножение c*ones
с двойной точностью, чтобы полученный массив имел тип dtype float64
? (Конечно, без умножения каждого элемента на константу по отдельности.)
(я рассмотрел этот связанный вопрос / ответ, в котором содержится некоторая полезная информация о типе d, полученная в результате Numpy операций скаляра и массива, но не совсем отвечает на мой вопрос: Numpy приведение float32 к float64 )