Cuando tomo la raíz cuadrada de -1 me da un error:
valor inválido encontrado en sqrt
- Pure NumPy 2D significa derivada de convolución de la imagen de entrada
- Promedio de computación para matriz numpy
- clasificación de matriz numpy en el lugar según el índice dado
- Tipo de datos de imagen de 8/16/32 bits de Numpy después de la conversión de cvtColor () a espacio de color de HSV
- La forma más eficiente de calcular el perfil radial.
¿Cómo arreglo eso?
///////// arr=sqrt(-1) print(arr) OUTPUT
Debe usar el sqrt del módulo cmath (parte de la biblioteca estándar)
>>> import cmath >>> cmath.sqrt(-1) 1j
Para evitar la advertencia / error de invalid value
, el argumento de la función sqrt
de numpy debe ser complejo:
In [8]: import numpy as np In [9]: np.sqrt(-1+0j) Out[9]: 1j
Como @AshwiniChaudhary señaló en un comentario, también puede usar la biblioteca estándar de cmath
:
In [10]: cmath.sqrt(-1) Out[10]: 1j
Acabo de descubrir la función de conveniencia numpy.lib.scimath.sqrt
explica en la documentación de sqrt . Lo uso de la siguiente manera:
>>> from numpy.lib.scimath import sqrt as csqrt >>> csqrt(-1) 1j
La raíz cuadrada de -1 no es un número real, sino un número imaginario. IEEE 754 no tiene una forma de representar números imaginarios.
Numpy tiene soporte para números complejos. Le sugiero que use eso: http://docs.scipy.org/doc/numpy/user/basics.types.html
Otros probablemente sugirieron métodos más deseables, pero solo para agregar a la conversación, siempre puede multiplicar cualquier número menor que 0 (el valor del cual desea el sqrt, -1 en este caso) por -1, luego tomar el sqrt de ese . Solo debes saber entonces que tu resultado es imaginario.