scipy Handledning
Komma igång med scipy
Sök…
Anmärkningar
SciPy är en samling av matematiska algoritmer och bekvämlighetsfunktioner som bygger på Numpy-förlängningen av Python. Det tillför betydande kraft till den interaktiva Python-sessionen genom att ge användaren kommandon och klasser på hög nivå för att manipulera och visualisera data. Med SciPy blir en interaktiv Python-session ett system för databehandling och systemprototypmiljö som konkurrerar som MATLAB, IDL, Octave, R-Lab och SciLab.
Den ytterligare fördelen med att basera SciPy på Python är att detta också gör ett kraftfullt programmeringsspråk tillgängligt för att utveckla sofistikerade program och specialiserade applikationer. Vetenskapliga applikationer som använder SciPy drar nytta av utvecklingen av ytterligare moduler i många nischer i mjukvarulandskapet av utvecklare över hela världen. Allt från parallell programmering till webb- och databasunderrutiner och klasser har gjorts tillgängliga för Python-programmeraren. All denna kraft är tillgänglig utöver de matematiska biblioteken i SciPy.
versioner
| Version | Utgivningsdatum |
|---|---|
| 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 |
Installation eller installation
Scipy innehåller delar skrivna i C, C ++ och Fortran som måste sammanställas före användning. Se därför till att nödvändiga kompilatorer och Python-utvecklingshuvuden är installerade. Att ha sammanställt kod innebär också att Scipy behöver ytterligare steg för att importera från utvecklingskällor, vilket förklaras nedan.
Skicka en kopia av huvudsakliga Scipy-förvaret i Github till ditt eget konto och skapa sedan ditt lokala arkiv via:
$ git clone [email protected]:YOURUSERNAME/scipy.git scipy
$ cd scipy
$ git remote add upstream git://github.com/scipy/scipy.git
För att bygga utvecklingsversionen av Scipy och köra tester, spawn interaktiva skal med Python-importvägarna korrekt konfigurerade, och så vidare. Gör en av följande:
$ 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
Detta bygger Scipy först, så det kan ta ett tag första gången. Att ange -n kör testen mot versionen av Scipy (om någon) som finns på den aktuella PYTHONPATH.
Att använda runtests.py är det rekommenderade tillvägagångssättet för körtester. Det finns också ett antal alternativ till det, till exempel att bygga på plats eller installera i en virtuell miljö. Vissa test är mycket långsamma och måste aktiveras separat.
Ubuntu & Debian
Kör kommando
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Versionerna i Ubuntu 12.10 eller nyare och Debian 7.0 eller nyare uppfyller den aktuella SciPy-stackspecifikationen. Användare kanske också vill lägga till NeuroDebian- arkivet för extra SciPy-paket.
Konvertera en gles matris till en tät matris med 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]])
versioner
Den första utgåvan av SciPy, vsn 0,10, släpptes den 14 augusti 2001. Den nuvarande utgåvan av SciPy (korrekt 26 juli 2016) är v 0,17 (stabil) med v .18 kommer snart. Detaljer om tidigare utgivningar listas här
Bildmanipulering med hjälp av Scipy (storleksbildsstorlek)
SciPy tillhandahåller grundläggande manipuleringsfunktioner. Dessa inkluderar funktioner för att läsa bilder från disk till numpy arrays, för att skriva numpy arrays till disk som bilder och för att ändra storlek på bilder.
I följande kod används bara en bild. Den är tonad, ändrad storlek och sparad. Både original- och resulterande bilder visas nedan:
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)
Grundläggande Hello World
Skapa en fil (t.ex. hello_world.py) i en textredigerare eller en pythonredigerare om du har en installerad ( välj en om du inte gör det - SublimeText, Eclipse, NetBeans, SciTe ... det finns många!)
hwld = 'Hello world'
print(hwld)
Observera att pythonvariabler inte behöver deklareras uttryckligen; deklarationen inträffar när du tilldelar ett värde med samma (=) -tecken till en variabel.
Utmatningen från ovanstående två kodrader är att strängen "Hello World" kommer att visas.
Funktioner skrivna i Python kan också användas i iPython.
I det här fallet kan du använda köra din sparade fil 'hello_world.py' i IPython så:
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
Om du önskar kan du använda två variabler, t.ex. en för hej och en för världen och sammanfoga dem med plustecknet (+):
h = 'Hello '
w = "world!'
print(h+w)
#this will also output Hello World, only this time with an exclamation mark..

