scipy Samouczek
Pierwsze kroki z Scipy
Szukaj…
Uwagi
SciPy to zbiór algorytmów matematycznych i funkcji wygody zbudowany na rozszerzeniu Numpy Pythona. Dodaje to znaczną moc interaktywnej sesji Pythona, zapewniając użytkownikowi polecenia i klasy wysokiego poziomu do manipulowania i wizualizacji danych. Dzięki SciPy interaktywna sesja Pythona staje się konkurencyjnym środowiskiem do przetwarzania danych i prototypowania systemów, takimi jak MATLAB, IDL, Octave, R-Lab i SciLab.
Dodatkową korzyścią wynikającą z oparcia SciPy na Pythonie jest to, że udostępnia on również potężny język programowania do wykorzystania w tworzeniu wyrafinowanych programów i specjalistycznych aplikacji. Aplikacje naukowe wykorzystujące SciPy korzystają z rozwoju dodatkowych modułów w wielu niszach oprogramowania przez programistów z całego świata. Wszystko, od programowania równoległego do podprogramów i klas internetowych i baz danych, zostało udostępnione programiście Python. Cała ta moc jest dostępna oprócz bibliotek matematycznych w SciPy.
Wersje
| Wersja | Data wydania |
|---|---|
| 0.19.0 | 2017-03-09 |
| 0.18.0 | 2016-07-25 |
| 0.17.0 | 22.01.2016 |
| 0.16.1 | 24.10.2015 |
| 0.16.0 | 2015-07-23 |
| 0,16b2 | 2015-05-24 |
| 0,16b1 | 2015-05-12 |
| 0.15.1 | 18.01.2015 |
| 0.15.0 | 11.01.2015 |
| 0.14.1 | 30.12.2014 |
| 0.14.1rc1 | 14.12.2014 |
| 0.14.0 | 2014-05-03 |
| 0.14.0rc2 | 23.04.2014 |
| 0.14.0rc1 | 02.04.2014 |
| 0.14.0b1 | 15.03.2014 |
| 0.13.3 | 2014-02-04 |
| 0.13.2 | 07.12.2013 |
| 0.13.1 | 16.11.2013 |
| 0.13.0 | 2013-10-19 |
| 0.13.0rc1 | 2013-10-10 |
| 0.12.1 | 08.10.2013 |
| 0.12.0 | 2013-04-06 |
| 0.12.0rc1 | 29.03.2013 |
| 0.12.0b1 | 16.02.2013 |
| 0.11.0 | 24.09.2012 |
| 0.11.0rc2 | 2012-08-12 |
| 0.11.0rc1 | 2012-07-17 |
| 0.11.0b1 | 2012-06-12 |
| 0.10.1 | 26.02.2012 |
| 0.10.1rc2 | 19.02.2012 |
| 0.10.1rc1 | 10.02.2012 |
| 0.10.0 | 13.11.2011 |
| 0.10.0rc1 | 2011-11-03 |
| 0.10.0b2 | 16.09.2011 |
| 0.10.0b1 | 2011-09-11 |
| 0.9.0 | 27.02.2011 |
Instalacja lub konfiguracja
Scipy zawiera części napisane w C, C ++ i Fortran, które należy skompilować przed użyciem. Dlatego upewnij się, że zainstalowane są niezbędne kompilatory i nagłówki programistyczne Python. Skompilowanie kodu oznacza również, że Scipy potrzebuje dodatkowych kroków do importowania ze źródeł programistycznych, które wyjaśniono poniżej.
Rozwinąć kopię głównego repozytorium Scipy w Github na własne konto, a następnie utworzyć lokalne repozytorium poprzez:
$ git clone [email protected]:YOURUSERNAME/scipy.git scipy
$ cd scipy
$ git remote add upstream git://github.com/scipy/scipy.git
Aby zbudować wersję programistyczną Scipy i uruchomić testy, spawnuj interaktywne powłoki z poprawnie skonfigurowanymi ścieżkami importu Python i tak dalej. Wykonaj jedną z następujących czynności:
$ 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
To buduje najpierw Scipy, więc może to chwilę potrwać. Podanie -n spowoduje uruchomienie testów dla wersji Scipy (jeśli istnieje) znalezionej na bieżącej ścieżce PYTHONPATH.
Korzystanie z runtests.py jest zalecanym podejściem do uruchamiania testów. Istnieje również wiele alternatyw, na przykład kompilacja w miejscu lub instalacja w środowisku wirtualnym. Niektóre testy są bardzo wolne i należy je oddzielnie włączać.
Ubuntu i Debian
Uruchom polecenie
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Wersje Ubuntu 12.10 lub nowszej i Debian 7.0 lub nowszej spełniają aktualną specyfikację stosu SciPy. Użytkownicy mogą również chcieć dodać repozytorium NeuroDebian dla dodatkowych pakietów SciPy.
Przekształć rzadką macierz w gęstą macierz za pomocą 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]])
Wersje
Pierwsze wydanie SciPy, w porównaniu z wersją 0.10, zostało wydane 14 sierpnia 2001 r. Obecne wydanie SciPy (poprawne na 26 lipca 2016 r.) To wersja 0.17 (stabilna), a wersja 18. będzie dostępna wkrótce. Szczegóły poprzednich wydań są wymienione tutaj
Manipulacja obrazem za pomocą Scipy (podstawowa zmiana rozmiaru obrazu)
SciPy zapewnia podstawowe funkcje manipulacji obrazem. Obejmują one funkcje odczytywania obrazów z dysku na tablice numpy, zapisywania tablic numpy na dysk jako obrazy oraz zmiany rozmiaru obrazów.
W poniższym kodzie użyto tylko jednego obrazu. Jest zabarwiony, zmieniony i zapisany. Zarówno oryginalne, jak i wynikowe obrazy pokazano poniżej:
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
Utwórz plik (np. Hello_world.py) w edytorze tekstów lub edytorze python, jeśli go masz ( wybierz jeden, jeśli nie masz - SublimeText, Eclipse, NetBeans, SciTe ... jest ich wiele!)
hwld = 'Hello world'
print(hwld)
Zauważ, że zmienne Pythona nie muszą być jawnie deklarowane; deklaracja dzieje się, gdy przypisujesz wartość ze znakiem równości (=) do zmiennej.
Wynikiem powyższych dwóch wierszy kodu jest wyświetlenie ciągu „Hello World”.
Funkcje napisane w Pythonie mogą być również używane w iPython.
W tym przypadku możesz użyć uruchomienia zapisanego pliku „hello_world.py” w IPython w następujący sposób:
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
Jeśli chcesz, możesz użyć dwóch zmiennych, np. Jednej dla hello i jednej dla world i połączyć je za pomocą znaku plus (+):
h = 'Hello '
w = "world!'
print(h+w)
#this will also output Hello World, only this time with an exclamation mark..

