SciPy é um conjunto de ferramentas científicas e numéricas de código aberto (licença BSD) em Python. Atualmente suporta funções especiais, integração, resolvedores de equações diferenciais ordinárias (ODE), otimização, ferramentas paralelas de programação, um compilador de expressão para C++ para rápida execução e outros. Uma boa regra geral é que se um algoritmo estiver descrito em um livro didático sobre computação numérica (por exemplo, a conhecida série Receitas Numéricas), provavelmente está implementado na SciPy.
A SciPy está disponível gratuitamente. Ela é distribuida como software de código aberto (open source), o que significa que você tem acesso completo ao código e pode usá-lo de qualquer maneira que seja permitida pela licença liberal BSD.
A licença da SciPy é gratuita para uso comercial e não-comercial, pelos termos da licença BSD.
Na verdade, os loops críticos que determinam o desempenho da biblioteca são normalmente implementados em C, C++ ou Fortran. Partes da SciPy são camadas finas de código desenvolvidas sobre as rotinas científicas que estão livremente disponíveis em https://www.netlib.org/. Netlib é um enorme repositório de algoritmos científicos incrivelmente valiosos e robustos de escritos em C e Fortran. Não seria ideal reescrever estes algoritmos e trabalhar por anos para debugá-los. SciPy usa uma variedade de métodos para gerar "wrappers" em torno desses algoritmos para que eles possam ser usados em Python. Alguns wrappers foram gerados manualmente em C. O restante foi gerado usando SWIG ou f2py. Algumas das contribuições mais recentes para SciPy são ou escritas completamente ou estão empacotadas com Cython ou Pythran.
Uma segunda resposta é a seguinte: para problemas difíceis, um melhor algoritmo pode fazer uma tremenda diferença no tempo necessário para resolver um problema. Então, usar os algoritmos integrados da SciPy pode ser muito mais rápido do que um algoritmo simples implementado em C.
A equipe de desenvolvimento da SciPy trabalha duro para tornar a SciPy tão confiável quanto possível, mas, como em qualquer produto de software, ocorrem erros. Se você encontrar bugs que afetam seu software, por favor, nos informe abrindo uma issue no o rastreador de erros da SciPy.
Vá até nossa página community. Estamos interessados em que mais pessoas ajudem a escrever código, testes, documentação e a desenvolver nosso site.
Sim, o suporte comercial é oferecido à SciPy por várias empresas, por exemplo Anaconda, Enthought e Quansight.
Em um mundo ideal, o NumPy não contém nada além do tipo de dados de array e as operações mais básicas: indexação, ordenação, reformatação, funções elementares básicas, etc. Todo código numérico deveria viver na SciPy. No entanto, um dos objetivos importantes da NumPy é a compatibilidade, então a NumPy tenta manter todos os recursos suportados por qualquer dos seus antecessores. Assim, a NumPy contém algumas funções de álgebra linear e transformações de Fourier, embora fosse mais apropriado que estas funções pertencessem à SciPy. Em qualquer caso, a SciPy contém versões mais completas dos módulos de álgebra linear, bem como muitos outros algoritmos numéricos. Se você está fazendo computação científica com Python, você deve provavelmente instalar tanto a NumPy quanto a SciPy. A maioria dos novos recursos pertence à SciPy ao invés da NumPy.
A funcionalidade de plotar gráficos vai além do escopo da SciPy, que se concentra em objetos numéricos e algoritmos. Existem vários pacotes que podem ser integrados com a SciPy para produzir gráficos de alta qualidade, como o imensamente popular Matplotlib. Outras opções populares são Bokeh, Plotly e Altair.
Assim como a produção de gráficos em 2D, os gráficos 3D estão além do escopo da SciPy. Tal como no caso do 2D, existem pacotes que podem ser integrados à SciPy para gerar esses gráficos.
Matplotlib fornece gráficos 3D básicos na sub-biblioteca mplot3d
, enquanto o Mayavi fornece mais opções para visualizações de gráficos em 3D, usando a potente engine VTK.
numpy.linalg
e uma scipy.linalg
? Qual é a diferença?#scipy.linalg
é um empacotamento mais completo da biblioteca Fortran LAPACK usando
f2py.
Um dos objetivos de design da NumPy foi torná-la compilável sem um compilador Fortran, e se você não tiver a LAPACK disponível, a NumPy irá usar a sua própria implementação. A SciPy requer que o compilador Fortran esteja instalado, e depende fortemente do código Fortran encapsulado.
Os módulos linalg
na NumPy e na SciPy
têm algumas funções em comum, mas com diferentes docstrings, e a
scipy.linalg
contém funções não
encontradas em numpy.linalg
, como funções
relacionadas com a decomposição LU e a
decomposição de Schur,
múltiplas maneiras de calcular a pseudoinversa e operações matriciais com funções transcendentais, como o logaritmo de uma matriz. Algumas funções
que existem em ambos os submódulos possuem funcionalidade aumentada na
scipy.linalg
; por exemplo,
scipy.linalg.eig
aceita um segundo argumento matricial
para resolver problemas de autovalores generalizados.
A última versão da NumPy que suporta o Python 2.7 é a NumPy 1.16.x. A última versão da SciPy que o faz é a SciPy 1.2.x. A primeira versão doaNumPy que suporta o Python 3.x foi a NumPy 1.5.0. O suporte ao Python 3 na SciPy foi introduzido na SciPy 0.9.0.
Em geral, sim. Melhorias recentes do PyPy fizeram-no funcionar bem com a stack científica do Python. Uma vez que grande parte da SciPy é implementada como módulos de extensão C, o código pode não ser executado mais rápido (para a maioria dos casos é significativamente mais lento, no entanto, PyPy está trabalhando ativamente para melhorar esta situação). Como sempre quando se trata de benchmarking, sua experiência será seu melhor guia.
Não, nenhum dos dois. Jython nunca funcionou, porque ele roda em cima da Máquina Virtual Java e não há como criar interfaces com extensões escritas em C para o interpretador padrão Python (CPython).
Há alguns anos, houve um esforço para tornar a NumPy e a SciPy compatíveis com .NET. Alguns usuários no momento relataram sucesso ao usar a NumPy com Ironclad no Windows 32 bits. Por último, Pyjion é um novo projeto que, alegadamente, poderia funcionar com a SciPy.
De qualquer forma, esses compiladores/runtimes não fazem parte do escopo da SciPy e não são suportados oficialmente pelo time de desenvolvimento.
Vá até nossa página community.