SciPy 0.9.0 Versionshinweise#

SciPy 0.9.0 ist der Höhepunkt von 6 Monaten harter Arbeit. Es enthält viele neue Funktionen, zahlreiche Fehlerbehebungen, eine verbesserte Testabdeckung und eine bessere Dokumentation. In dieser Version gab es eine Reihe von Deprecation und API-Änderungen, die unten dokumentiert sind. Alle Benutzer werden ermutigt, auf diese Version zu aktualisieren, da es eine große Anzahl von Fehlerbehebungen und Optimierungen gibt. Darüber hinaus wird sich unsere Entwicklungsaufmerksamkeit nun auf Fehlerbehebungsreleases der 0.9.x-Zweigstelle und auf das Hinzufügen neuer Funktionen im Entwicklungs-Trunk verlagern.

Diese Version erfordert Python 2.4 - 2.7 oder 3.1 - und NumPy 1.5 oder höher.

Bitte beachten Sie, dass SciPy weiterhin als "Beta"-Status betrachtet wird, während wir auf eine SciPy 1.0.0-Version hinarbeiten. Die 1.0.0-Version wird einen wichtigen Meilenstein in der Entwicklung von SciPy markieren, danach wird es viel schwieriger sein, die Paketstruktur oder die API zu ändern. Obwohl diese Vor-1.0-Versionen als "Beta"-Status gelten, sind wir bestrebt, sie so fehlerfrei wie möglich zu gestalten.

Bis zur Version 1.0 werden wir jedoch die Funktionalität, Organisation und Schnittstelle aggressiv überprüfen und verfeinern. Dies geschieht, um das Paket so kohärent, intuitiv und nützlich wie möglich zu gestalten. Um dies zu erreichen, benötigen wir Hilfe von der Benutzergemeinschaft. Insbesondere benötigen wir Feedback zu allen Aspekten des Projekts – von den Algorithmen, die wir implementieren, bis hin zu Details über die Aufruf-Signaturen unserer Funktionen.

Python 3#

Scipy 0.9.0 ist die erste SciPy-Version, die Python 3 unterstützt. Das einzige Modul, das noch nicht portiert wurde, ist scipy.weave.

Speicherort des Scipy-Quellcodes wird geändert#

Kurz nach dieser Veröffentlichung wird Scipy aufhören, SVN als Versionskontrollsystem zu verwenden, und zu Git wechseln. Der Entwicklung-Quellcode für Scipy kann von da an gefunden werden unter

Neue Funktionen#

Delaunay-Triangulationen (scipy.spatial)#

Scipy enthält jetzt Routinen zur Berechnung von Delaunay-Triangulationen in N Dimensionen, die von der Qhull Computational Geometry Library unterstützt werden. Solche Berechnungen können nun die neue scipy.spatial.Delaunay-Schnittstelle nutzen.

N-dimensionale Interpolation (scipy.interpolate)#

Die Unterstützung für die Interpolation von verteilten Daten wurde nun erheblich verbessert. Diese Version enthält eine scipy.interpolate.griddata-Funktion, die lineare und nächstgelegene Nachbar-Interpolation für N-dimensionale verteilte Daten durchführen kann, zusätzlich zur kubischen Spline-Interpolation (C1-glatt) in 2D und 1D. Eine objektorientierte Schnittstelle zu jedem Interpolator-Typ ist ebenfalls verfügbar.

Nichtlineare Gleichungslöser (scipy.optimize)#

Scipy enthält neue Routinen für die groß angelegte Lösung nichtlinearer Gleichungen in scipy.optimize. Die folgenden Methoden sind implementiert

  • Newton-Krylov (scipy.optimize.newton_krylov)

  • (Generalisierte) Sekantenverfahren

    • Limitierte Broyden-Verfahren (scipy.optimize.broyden1, scipy.optimize.broyden2)

    • Anderson-Verfahren (scipy.optimize.anderson)

  • Einfache Iterationen (scipy.optimize.diagbroyden, scipy.optimize.excitingmixing, scipy.optimize.linearmixing)

Das Modul scipy.optimize.nonlin wurde komplett überarbeitet und einige Funktionen wurden als veraltet markiert (siehe oben).

Neue Routinen für lineare Algebra (scipy.linalg)#

Scipy enthält nun Routinen zur effizienten Lösung von dreieckigen Gleichungssystemen (scipy.linalg.solve_triangular).

Verbesserte Entwurfsfunktionen für FIR-Filter (scipy.signal)#

Die Funktion scipy.signal.firwin wurde erweitert, um das Design von Hochpass-, Bandpass-, Bandsperr- und Mehrband-FIR-Filtern zu ermöglichen.

Die Funktion scipy.signal.firwin2 wurde hinzugefügt. Diese Funktion verwendet die Fenster-Methode, um einen FIR-Filter mit linearem Phasenverhalten und beliebiger Frequenzantwort zu erstellen.

Die Funktionen scipy.signal.kaiser_atten und scipy.signal.kaiser_beta wurden hinzugefügt.

Verbesserte statistische Tests (scipy.stats)#

Eine neue Funktion scipy.stats.fisher_exact wurde hinzugefügt, die Fishers Exakt-Test für 2x2-Kontingenztabellen bereitstellt.

Die Funktion scipy.stats.kendalltau wurde neu geschrieben, um sie deutlich schneller zu machen (O(n log(n)) vs O(n^2)).

Als veraltet markierte Funktionen#

Veraltete nichtlineare Löser (in scipy.optimize)#

Die folgenden nichtlinearen Löser aus scipy.optimize sind als veraltet markiert

  • broyden_modified (schlechte Leistung)

  • broyden1_modified (schlechte Leistung)

  • broyden_generalized (entspricht anderson)

  • anderson2 (entspricht anderson)

  • broyden3 (ersetzt durch neue Limited-Memory-Broyden-Verfahren)

  • vackar (umbenannt in diagbroyden)

Entfernte Funktionen#

Die als veraltet markierten Module helpmod, pexec und ppimport wurden aus scipy.misc entfernt.

Der Schlüssel output_type in vielen scipy.ndimage Interpolationsfunktionen wurde entfernt.

Der Schlüssel econ in scipy.linalg.qr wurde entfernt. Die gleiche Funktionalität ist weiterhin verfügbar, indem mode='economic' angegeben wird.

Altes Verhalten von Correlate/Convolve (in scipy.signal)#

Das alte Verhalten für scipy.signal.convolve, scipy.signal.convolve2d, scipy.signal.correlate und scipy.signal.correlate2d wurde in 0.8.0 als veraltet markiert und nun entfernt. Convolve und Correlate tauschten ihre Argumente, wenn das zweite Argument größere Dimensionen als das erste hatte und der Modus sich auf die Eingabe mit der größten Dimension bezog. Das aktuelle Verhalten ist, die Eingaben niemals zu vertauschen, was die meisten Leute erwarten und wie Korrelation normalerweise definiert wird.

scipy.stats#

Viele Funktionen in scipy.stats, die entweder von numpy verfügbar sind oder ersetzt wurden und seit Version 0.7 als veraltet gelten, wurden entfernt: std, var, mean, median, cov, corrcoef, z, zs, stderr, samplestd, samplevar, pdfapprox, pdf_moments und erfc. Diese Änderungen spiegeln sich in scipy.stats.mstats wider.

scipy.sparse#

Mehrere Methoden der Sparse-Matrix-Klassen in scipy.sparse, die seit Version 0.7 als veraltet galten, wurden entfernt: save, rowcol, getdata, listprint, ensure_sorted_indices, matvec, matmat und rmatvec.

Die Funktionen spkron, speye, spidentity, lil_eye und lil_diags wurden aus scipy.sparse entfernt. Die ersten drei Funktionen sind weiterhin verfügbar als scipy.sparse.kron, scipy.sparse.eye und scipy.sparse.identity.

Die Schlüssel dims und nzmax wurden aus dem Konstruktor der Sparse-Matrix entfernt. Die Attribute colind und rowind wurden aus CSR- bzw. CSC-Matrizen entfernt.

scipy.sparse.linalg.arpack.speigs#

Eine doppelte Schnittstelle zur ARPACK-Bibliothek wurde entfernt.

Weitere Änderungen#

Änderungen an der ARPACK-Schnittstelle#

Die Schnittstelle zu den ARPACK-Eigenwertroutinen in scipy.sparse.linalg wurde für mehr Robustheit geändert.

Die Eigenwert- und SVD-Routinen lösen nun ArpackNoConvergence aus, wenn die Eigenwert-Iteration nicht konvergiert. Wenn teilweise konvergierte Ergebnisse gewünscht sind, können diese wie folgt abgerufen werden

import numpy as np
from scipy.sparse.linalg import eigs, ArpackNoConvergence

m = np.random.randn(30, 30)
try:
    w, v = eigs(m, 6)
except ArpackNoConvergence, err:
    partially_converged_w = err.eigenvalues
    partially_converged_v = err.eigenvectors

Mehrere Fehler wurden ebenfalls behoben.

Die Routinen wurden außerdem wie folgt umbenannt

  • eigen –> eigs

  • eigen_symmetric –> eigsh

  • svd –> svds