python - punto - matplotlib
¿Por qué NumPy y SciPy tienen muchas de las mismas funciones? ¿Cuál debería preferir? (1)
De las preguntas frecuentes de SciPy :
En un mundo ideal, NumPy no contendría nada más que el tipo de datos de la matriz y las operaciones más básicas: indexación, clasificación, remodelación, funciones básicas de elementos, etcétera. Todo código numérico residiría en SciPy. Sin embargo, uno de los objetivos importantes de NumPy es la compatibilidad, por lo que NumPy intenta conservar todas las funciones compatibles con cualquiera de sus predecesores. Por lo tanto, NumPy contiene algunas funciones de álgebra lineal, aunque éstas pertenecen más correctamente a SciPy. En cualquier caso, SciPy contiene versiones más completas de los módulos de álgebra lineal, así como muchos otros algoritmos numéricos. Si está haciendo informática científica con python, probablemente debería instalar tanto NumPy como SciPy. La mayoría de las características> nuevas pertenecen a SciPy en lugar de a NumPy.
Entonces sí, los duplicados son para compatibilidad con versiones anteriores. En general, dan el mismo resultado. Sin embargo, como lo indican las preguntas más frecuentes, las nuevas características generalmente se implementan en SciPy, pero no necesariamente en NumPy. Esto incluye correcciones de errores. He encontrado, por ejemplo, que numpy.linalg.eig arrojó valores propios incorrectos para una matriz compleja, mientras que scipy.linalg.eig arrojó los correctos.
En general, prefiero apegarme al escenario del "mundo ideal" de las preguntas frecuentes: utilizo NumPy para las manipulaciones básicas de la matriz y SciPy para todo mi álgebra lineal. De esta manera no me toparé con sorpresas.
Posible duplicado:
Relación entre scipy y numpy
Por ejemplo, NumPy tiene funciones de ventana bartlett
, blackman
, hamming
, hanning
, kaiser
, mientras que SciPy tiene éstas y muchas más , pero parecen producir resultados idénticos.
NumPy tiene numpy.fft.fft2(a, s=None, axes=(-2, -1))
.
SciPy tiene scipy.fftpack.fft2(x, shape=None, axes=(-2, -1), overwrite_x=0)
.
¿Por qué hay duplicados? ¿Solo por compatibilidad con versiones anteriores? Si es así, ¿por qué se definen de manera diferente en diferentes lugares? ¿Qué debería preferir cuando escribo algo nuevo?