scipyAan de slag met Scipy


Opmerkingen

Over Scipy

SciPy is een verzameling wiskundige algoritmen en gemaksfuncties gebouwd op de Numpy-extensie van Python. Het voegt aanzienlijke kracht toe aan de interactieve Python-sessie door de gebruiker op hoog niveau opdrachten en klassen te bieden voor het manipuleren en visualiseren van gegevens. Met SciPy wordt een interactieve Python-sessie een rivaalsystemen voor gegevensverwerking en systeemprototyping, zoals MATLAB, IDL, Octave, R-Lab en SciLab.

Het extra voordeel van het baseren van SciPy op Python is dat dit ook een krachtige programmeertaal beschikbaar stelt voor gebruik bij het ontwikkelen van geavanceerde programma's en gespecialiseerde toepassingen. Wetenschappelijke toepassingen die SciPy gebruiken, profiteren van de ontwikkeling van extra modules in talloze niches van het softwarelandschap door ontwikkelaars over de hele wereld. Alles van parallelle programmering tot web- en database-subroutines en klassen zijn beschikbaar gesteld aan de Python-programmeur. Al deze kracht is beschikbaar naast de wiskundige bibliotheken in SciPy.

versies

Versie Publicatiedatum
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

Basic Hello World

Maak een bestand (bijv. Hello_world.py) in een teksteditor of een python-editor als je er een hebt geïnstalleerd ( kies er een als je dat niet doet - SublimeText, Eclipse, NetBeans, SciTe ... er zijn er veel!)

hwld = 'Hello world'
print(hwld)
 

Merk op dat python-variabelen niet expliciet hoeven te worden opgegeven; de verklaring vindt plaats wanneer u een waarde met het isgelijkteken (=) toewijst aan een variabele.

De uitvoer van de bovenstaande twee coderegels is dat de tekenreeks "Hallo wereld" wordt weergegeven.

Functies geschreven in Python kunnen ook in iPython worden gebruikt.

In dit geval kunt u uw opgeslagen bestand 'hello_world.py' als volgt in IPython uitvoeren:

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
 

Als je wilt, kun je twee variabelen gebruiken, bijvoorbeeld een voor hallo en een voor wereld en deze samenvoegen met het plusteken (+):

 h = 'Hello '
 w = "world!'
 print(h+w)

 #this will also output Hello World, only this time with an exclamation mark..
 

Converteer een schaarse matrix naar een dichte matrix met 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]])
 

Beeldmanipulatie met Scipy (formaat wijzigen van basisafbeelding)

SciPy biedt basisfuncties voor het bewerken van afbeeldingen. Deze omvatten functies om afbeeldingen van schijf in numpy arrays te lezen, om numpy arrays als schijf naar schijf te schrijven en om afbeeldingen te verkleinen.

In de volgende code wordt slechts één afbeelding gebruikt. Het is getint, van formaat veranderd en opgeslagen. Zowel originele als resulterende afbeeldingen worden hieronder getoond:

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)
 

origineel resized_tinted

Referentie

Installatie of instellingen

Scipy bevat delen geschreven in C, C ++ en Fortran die voor gebruik moeten worden gecompileerd. Zorg daarom dat de benodigde compilers en Python-ontwikkelkoppen zijn geïnstalleerd. Het hebben van gecompileerde code betekent ook dat Scipy aanvullende stappen nodig heeft om te importeren vanuit ontwikkelingsbronnen, die hieronder worden uitgelegd.

Maak een kopie van de belangrijkste Scipy-repository in Github naar uw eigen account en maak vervolgens uw lokale repository aan via:

$ git clone git@github.com:YOURUSERNAME/scipy.git scipy
$ cd scipy
$ git remote add upstream git://github.com/scipy/scipy.git
 

Om de ontwikkelingsversie van Scipy te bouwen en tests uit te voeren, spawnen interactieve shells met de Python-importpaden correct ingesteld, enzovoort. Doe een van de volgende dingen:

$ 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
 

Hiermee wordt Scipy eerst gebouwd, dus het kan de eerste keer even duren. Als u -n opgeeft, worden de tests uitgevoerd tegen de versie van Scipy (indien aanwezig) die u op de huidige PYTHONPATH vindt.

Het gebruik van runtests.py is de aanbevolen methode om tests uit te voeren. Er zijn ook een aantal alternatieven, bijvoorbeeld ter plekke bouwen of installeren in een virtuele omgeving. Sommige tests zijn erg traag en moeten afzonderlijk worden ingeschakeld.

Link naar API

Ubuntu & Debian

Voer opdracht uit

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
 

De versies in Ubuntu 12.10 of nieuwer en Debian 7.0 of nieuwer voldoen aan de huidige SciPy-stackspecificatie. Gebruikers willen misschien ook de NeuroDebian- repository toevoegen voor extra SciPy-pakketten.

versies

De eerste release van SciPy, vsn 0.10, werd uitgebracht op 14 augustus 2001. De huidige release van SciPy (correct op 26 juli 2016) is v 0.17 (stabiel) met v .18 binnenkort. Details van eerdere releases worden hier vermeld