scipy Tutorial
Iniziare con Scipy
Ricerca…
Osservazioni
SciPy è una raccolta di algoritmi matematici e funzioni di comodità basate sull'estensione di Python di Numpy. Aggiunge un significativo potere alla sessione interattiva di Python fornendo all'utente comandi e classi di alto livello per manipolare e visualizzare i dati. Con SciPy una sessione Python interattiva diventa un ambiente di elaborazione dati e di prototipazione di sistemi che rivaleggia con sistemi come MATLAB, IDL, Octave, R-Lab e SciLab.
L'ulteriore vantaggio di basare SciPy su Python è che questo rende anche un potente linguaggio di programmazione disponibile per l'uso nello sviluppo di programmi sofisticati e applicazioni specializzate. Le applicazioni scientifiche che utilizzano SciPy traggono vantaggio dallo sviluppo di moduli aggiuntivi in numerose nicchie del panorama del software da parte degli sviluppatori di tutto il mondo. Tutto, dalla programmazione parallela alle sottorubriche e alle classi web e di database sono stati resi disponibili al programmatore Python. Tutto questo potere è disponibile in aggiunta alle librerie matematiche in SciPy.
Versioni
| Versione | Data di rilascio |
|---|---|
| 0.19.0 | 2017/03/09 |
| 0.18.0 | 2016/07/25 |
| 0.17.0 | 2016/01/22 |
| 0.16.1 | 2015/10/24 |
| 0.16.0 | 2015/07/23 |
| 0.16b2 | 2015/05/24 |
| 0.16b1 | 2015/05/12 |
| 0.15.1 | 2015/01/18 |
| 0.15.0 | 2015/01/11 |
| 0.14.1 | 2014/12/30 |
| 0.14.1rc1 | 2014/12/14 |
| 0.14.0 | 2014/05/03 |
| 0.14.0rc2 | 2014/04/23 |
| 0.14.0rc1 | 2014/04/02 |
| 0.14.0b1 | 2014/03/15 |
| 0.13.3 | 2014/02/04 |
| 0.13.2 | 2013/12/07 |
| 0.13.1 | 2013/11/16 |
| 0.13.0 | 2013/10/19 |
| 0.13.0rc1 | 2013/10/10 |
| 0.12.1 | 2013/10/08 |
| 0.12.0 | 2013/04/06 |
| 0.12.0rc1 | 2013/03/29 |
| 0.12.0b1 | 2013/02/16 |
| 0.11.0 | 2012-09-24 |
| 0.11.0rc2 | 2012/08/12 |
| 0.11.0rc1 | 2012-07-17 |
| 0.11.0b1 | 2012-06-12 |
| 0.10.1 | 2012-02-26 |
| 0.10.1rc2 | 2012-02-19 |
| 0.10.1rc1 | 2012-02-10 |
| 0.10.0 | 2011-11-13 |
| 0.10.0rc1 | 2011-11-03 |
| 0.10.0b2 | 2011-09-16 |
| 0.10.0b1 | 2011-09-11 |
| 0.9.0 | 2011-02-27 |
Installazione o configurazione
Scipy contiene parti scritte in C, C ++ e Fortran che devono essere compilate prima dell'uso. Quindi assicurati che siano installati i compilatori e gli header di sviluppo Python necessari. Avere compilato il codice significa anche che Scipy necessita di ulteriori passaggi per importare da fonti di sviluppo, che sono spiegate di seguito.
Inserisci una copia del repository Scipy principale in Github sul tuo account, quindi crea il tuo repository locale tramite:
$ git clone [email protected]:YOURUSERNAME/scipy.git scipy
$ cd scipy
$ git remote add upstream git://github.com/scipy/scipy.git
Per creare la versione di sviluppo di Scipy ed eseguire test, generare spawn interattive con i percorsi di importazione Python configurati correttamente e così via. Effettuare una delle seguenti operazioni:
$ python runtests.py -v
$ python runtests.py -v -s optimize
$ python runtests.py -v -t scipy/special/tests/test_basic.py:test_xlogy
$ python runtests.py --ipython
$ python runtests.py --python somescript.py
$ python runtests.py --bench
Questo prima costruisce Scipy, quindi potrebbe volerci un po 'di tempo la prima volta. Specificando -n eseguiranno i test sulla versione di Scipy (se presente) trovata sul PYTHONPATH corrente.
L'utilizzo di runtests.py è l'approccio consigliato all'esecuzione dei test. Ci sono anche una serie di alternative ad esso, ad esempio la creazione sul posto o l'installazione in un ambiente virtuale. Alcuni test sono molto lenti e devono essere abilitati separatamente.
Ubuntu e Debian
Esegui comando
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Le versioni in Ubuntu 12.10 o successive e Debian 7.0 o successive soddisfano le attuali specifiche dello stack SciPy. Gli utenti potrebbero anche voler aggiungere il repository NeuroDebian per pacchetti SciPy aggiuntivi.
Converti una matrice sparsa in una matrice densa usando SciPy
from scipy.sparse import csr_matrix
A = csr_matrix([[1,0,2],[0,3,0]])
>>>A
<2x3 sparse matrix of type '<type 'numpy.int64'>'
with 3 stored elements in Compressed Sparse Row format>
>>> A.todense()
matrix([[1, 0, 2],
[0, 3, 0]])
>>> A.toarray()
array([[1, 0, 2],
[0, 3, 0]])
versioni
La prima versione di SciPy, vsn 0.10, è stata rilasciata il 14 agosto 2001. L'attuale versione di SciPy (corretta al 26 luglio 2016) è v 0.17 (stabile) con il prossimo v .18. I dettagli delle precedenti versioni sono elencati qui
Manipolazione delle immagini con Scipy (ridimensionamento dell'immagine di base)
SciPy fornisce le funzioni base di manipolazione delle immagini. Questi includono funzioni per leggere le immagini dal disco in array numpy, per scrivere array di numpy sul disco come immagini e per ridimensionare le immagini.
Nel seguente codice, viene utilizzata solo un'immagine. È colorato, ridimensionato e salvato. Sia le immagini originali che quelle risultanti sono mostrate di seguito:
import numpy as np //scipy is numpy-dependent
from scipy.misc import imread, imsave, imresize //image resizing functions
# Read an JPEG image into a numpy array
img = imread('assets/cat.jpg')
print img.dtype, img.shape # Prints "uint8 (400, 248, 3)"
# We can tint the image by scaling each of the color channels
# by a different scalar constant. The image has shape (400, 248, 3);
# we multiply it by the array [1, 0.95, 0.9] of shape (3,);
# numpy broadcasting means that this leaves the red channel unchanged,
# and multiplies the green and blue channels by 0.95 and 0.9
# respectively.
img_tinted = img * [1, 0.95, 0.9]
# Resize the tinted image to be 300 by 300 pixels.
img_tinted = imresize(img_tinted, (300, 300))
# Write the tinted image back to disk
imsave('assets/cat_tinted.jpg', img_tinted)
Basic Hello World
Crea un file (ad esempio hello_world.py) in un editor di testo o in un editor python se ne hai uno installato ( scegli uno se non lo fai - SublimeText, Eclipse, NetBeans, SciTe ... ce ne sono molti!)
hwld = 'Hello world'
print(hwld)
Si noti che le variabili python non devono essere dichiarate esplicitamente; la dichiarazione avviene quando si assegna un valore con il segno uguale (=) a una variabile.
L'output delle due righe di codice sopra è che verrà visualizzata la stringa "Hello World".
Anche le funzioni scritte in Python possono essere utilizzate in iPython.
In questo caso, puoi utilizzare il file salvato "hello_world.py" in IPython, ad esempio:
In [1]: %run hello_world.py
#run file to get output below
Hello world
In [2]: wld
#show what value of wld var is
Out[2]: 'Hello world'
In [3]: %whowld
#display info on variable wld (name/type/value)
Variable Type Data/Info
----------------------------
wld str Hello world
Se lo desideri, puoi utilizzare due variabili, ad esempio una per ciao e una per mondo e concatenarle usando il segno più (+):
h = 'Hello '
w = "world!'
print(h+w)
#this will also output Hello World, only this time with an exclamation mark..

