SciPy 0.11.0 Versionshinweise#

SciPy 0.11.0 ist die Krönung von 8 Monaten harter Arbeit. Es enthält viele neue Funktionen, zahlreiche Fehlerbehebungen, verbesserte Testabdeckung und bessere Dokumentation. Highlights dieser Version sind

  • Ein neues Untermodul wurde hinzugefügt, das eine Reihe gängiger Algorithmen für dünnbesetzte Graphen bereitstellt.

  • Neue vereinheitlichte Schnittstellen zu den bestehenden Optimierungs- und Nullstellenfindungsfunktionen wurden hinzugefügt.

Alle Benutzer werden ermutigt, auf diese Version zu aktualisieren, da es eine große Anzahl von Fehlerbehebungen und Optimierungen gibt. Unsere Entwicklungsaufmerksamkeit wird sich nun auf Fehlerbehebungsreleases für den 0.11.x-Branch und auf das Hinzufügen neuer Funktionen im Master-Branch verlagern.

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

Neue Funktionen#

Sparse Graph Untermodul#

Das neue Untermodul scipy.sparse.csgraph implementiert eine Reihe effizienter Graphalgorithmen für Graphen, die als dünnbesetzte Adjazenzmatrizen gespeichert sind. Verfügbare Routinen sind

  • connected_components - Bestimmung von verbundenen Komponenten eines Graphen

  • laplacian - Berechnung des Laplace-Operators eines Graphen

  • shortest_path - Berechnung des kürzesten Pfades zwischen Punkten in einem positiven Graphen

  • dijkstra - Verwendung des Dijkstra-Algorithmus für den kürzesten Pfad

  • floyd_warshall - Verwendung des Floyd-Warshall-Algorithmus für den kürzesten Pfad

  • breadth_first_order - Berechnung einer Breitensuche-Reihenfolge von Knoten

  • depth_first_order - Berechnung einer Tiefensuche-Reihenfolge von Knoten

  • breadth_first_tree - Konstruktion des Breitensuche-Baums von einem gegebenen Knoten

  • depth_first_tree - Konstruktion eines Tiefensuche-Baums von einem gegebenen Knoten

  • minimum_spanning_tree - Konstruktion des minimalen Spannbaums eines Graphen

scipy.optimize Verbesserungen#

Das Optimierungsmodul wurde in dieser Version stark überarbeitet. Zusätzlich zu hinzugefügten Tests, Verbesserungen der Dokumentation, Fehlerbehebungen und Code-Bereinigungen wurden folgende Verbesserungen vorgenommen:

  • Eine vereinheitlichte Schnittstelle zu Minimierern von univariaten und multivariaten Funktionen wurde hinzugefügt.

  • Eine vereinheitlichte Schnittstelle zu Nullstellenfindungsalgorithmen für multivariate Funktionen wurde hinzugefügt.

  • Der L-BFGS-B-Algorithmus wurde auf Version 3.0 aktualisiert.

Vereinheitlichte Schnittstellen zu Minimierern#

Zwei neue Funktionen scipy.optimize.minimize und scipy.optimize.minimize_scalar wurden hinzugefügt, um eine gemeinsame Schnittstelle zu Minimierern von multivariaten bzw. univariaten Funktionen bereitzustellen. Für multivariate Funktionen bietet scipy.optimize.minimize eine Schnittstelle zu Methoden für unbeschränkte Optimierung (fmin, fmin_powell, fmin_cg, fmin_ncg, fmin_bfgs und anneal) oder beschränkte Optimierung (fmin_l_bfgs_b, fmin_tnc, fmin_cobyla und fmin_slsqp). Für univariaten Funktionen bietet scipy.optimize.minimize_scalar eine Schnittstelle zu Methoden für unbeschränkte und beschränkte Optimierung (brent, golden, fminbound). Dies ermöglicht einen einfacheren Vergleich und Wechsel zwischen den Lösern.

Vereinheitlichte Schnittstelle zu Nullstellenfindungsalgorithmen#

Die neue Funktion scipy.optimize.root bietet eine gemeinsame Schnittstelle zu Nullstellenfindungsalgorithmen für multivariate Funktionen und integriert die Löser fsolve, leastsq und nonlin.

scipy.linalg Verbesserungen#

Neue Löser für Matrixgleichungen

Löser für die Sylvester-Gleichung (scipy.linalg.solve_sylvester), diskrete und kontinuierliche Lyapunov-Gleichungen (scipy.linalg.solve_lyapunov, scipy.linalg.solve_discrete_lyapunov) und diskrete sowie kontinuierliche algebraische Riccati-Gleichungen (scipy.linalg.solve_continuous_are, scipy.linalg.solve_discrete_are) wurden zu scipy.linalg hinzugefügt. Diese Löser werden häufig im Bereich der linearen Regelungstechnik eingesetzt.

QZ- und QR-Zerlegung#

Es ist nun möglich, die QZ- oder generalisierte Schur-Zerlegung mit scipy.linalg.qz zu berechnen. Diese Funktion wrappt die LAPACK-Routinen sgges, dgges, cgges und zgges.

Die Funktion scipy.linalg.qr_multiply, die eine effiziente Berechnung des Matrixprodukts von Q (aus einer QR-Zerlegung) und einem Vektor ermöglicht, wurde hinzugefügt.

Pascalsche Matrizen#

Eine Funktion zur Erzeugung von Pascalschem Matrizen, scipy.linalg.pascal, wurde hinzugefügt.

Konstruktion und Operationen mit dünnbesetzten Matrizen#

Zwei neue Funktionen, scipy.sparse.diags und scipy.sparse.block_diag, wurden hinzugefügt, um diagonal- und blockdiagonale dünnbesetzte Matrizen einfach zu konstruieren.

scipy.sparse.csc_matrix und csr_matrix unterstützen nun die Operationen sin, tan, arcsin, arctan, sinh, tanh, arcsinh, arctanh, rint, sign, expm1, log1p, deg2rad, rad2deg, floor, ceil und trunc. Zuvor mussten diese Operationen durch die Bearbeitung des data-Attributs der Matrizen durchgeführt werden.

Iterativer LSMR-Löser#

LSMR, eine iterative Methode zur Lösung von (dünnbesetzten) linearen und linearen Kleinstquadratensystemen, wurde als scipy.sparse.linalg.lsmr hinzugefügt.

Diskrete Sinustransformation#

Bindungen für die diskreten Sinustransformationsfunktionen wurden zu scipy.fftpack hinzugefügt.

scipy.interpolate Verbesserungen#

Für die Interpolation in sphärischen Koordinaten wurden die drei Klassen scipy.interpolate.SmoothSphereBivariateSpline, scipy.interpolate.LSQSphereBivariateSpline und scipy.interpolate.RectSphereBivariateSpline hinzugefügt.

Binned-Statistiken (scipy.stats)#

Das Stats-Modul hat Funktionen zur Durchführung von Binned-Statistiken erhalten, die eine Verallgemeinerung von Histogrammen in 1D, 2D und mehreren Dimensionen darstellen: scipy.stats.binned_statistic, scipy.stats.binned_statistic_2d und scipy.stats.binned_statistic_dd.

Veraltete Funktionen#

scipy.sparse.cs_graph_components wurde zu einem Teil des Sparse-Graph-Untermoduls gemacht und in scipy.sparse.csgraph.connected_components umbenannt. Das Aufrufen der früheren Routine führt zu einer Verwarnung bezüglich der Veraltung.

scipy.misc.radon wurde als veraltet markiert. Eine voll funktionsfähigere Radon-Transformation finden Sie in scikits-image.

scipy.io.save_as_module wurde als veraltet markiert. Eine bessere Möglichkeit, mehrere Numpy-Arrays zu speichern, ist die Funktion numpy.savez.

Die Parameter xa und xb für alle Verteilungen in scipy.stats.distributions wurden bereits nicht verwendet; sie wurden nun als veraltet markiert.

Abwärtsinkompatible Änderungen#

Entfernung von scipy.maxentropy#

Das Modul scipy.maxentropy, das in der Version 0.10.0 als veraltet markiert wurde, wurde entfernt. Logistische Regression in scikits.learn ist eine gute und moderne Alternative für diese Funktionalität.

Kleine Verhaltensänderung von splev#

Die Spline-Evaluierungsfunktion verhält sich nun ähnlich wie interp1d für Arrays der Größe 1. Früheres Verhalten

>>> from scipy.interpolate import splev, splrep, interp1d
>>> x = [1,2,3,4,5]
>>> y = [4,5,6,7,8]
>>> tck = splrep(x, y)
>>> splev([1], tck)
4.
>>> splev(1, tck)
4.

Korrigiertes Verhalten

>>> splev([1], tck)
array([ 4.])
>>> splev(1, tck)
array(4.)

Dies betrifft auch die UnivariateSpline-Klassen.

Verhalten von scipy.integrate.complex_ode#

Das Verhalten des y-Attributs von complex_ode wurde geändert. Zuvor drückte es die komplexwertige Lösung in der Form aus:

z = ode.y[::2] + 1j * ode.y[1::2]

Jetzt ist es direkt die komplexwertige Lösung

z = ode.y

Kleine Verhaltensänderung von T-Tests#

Die T-Tests scipy.stats.ttest_ind, scipy.stats.ttest_rel und scipy.stats.ttest_1samp wurden so geändert, dass 0 / 0 jetzt NaN statt 1 zurückgibt.

Weitere Änderungen#

Die SuperLU-Quellen in scipy.sparse.linalg wurden auf Version 4.3 von Upstream aktualisiert.

Die Funktion scipy.signal.bode, die Betrags- und Phasendaten für ein kontinuierliches System berechnet, wurde hinzugefügt.

Der zweiseitige T-Test scipy.stats.ttest_ind erhielt eine Option zum Vergleichen von Stichproben mit ungleichen Varianzen, d. h. Welch's T-Test.

scipy.misc.logsumexp nimmt nun ein optionales Schlüsselwortargument axis an.

Autoren#

Diese Version enthält Beiträge von den folgenden Personen (mindestens ein Patch zu dieser Version beigesteuert, Namen in alphabetischer Reihenfolge)

  • Jeff Armstrong

  • Chad Baker

  • Brandon Beacher +

  • behrisch +

  • borishim +

  • Matthew Brett

  • Lars Buitinck

  • Luis Pedro Coelho +

  • Johann Cohen-Tanugi

  • David Cournapeau

  • dougal +

  • Ali Ebrahim +

  • endolith +

  • Bjørn Forsman +

  • Robert Gantner +

  • Sebastian Gassner +

  • Christoph Gohlke

  • Ralf Gommers

  • Yaroslav Halchenko

  • Charles Harris

  • Jonathan Helmus +

  • Andreas Hilboll +

  • Marc Honnorat +

  • Jonathan Hunt +

  • Maxim Ivanov +

  • Thouis (Ray) Jones

  • Christopher Kuster +

  • Josh Lawrence +

  • Denis Laxalde +

  • Travis Oliphant

  • Joonas Paalasmaa +

  • Fabian Pedregosa

  • Josef Perktold

  • Gavin Price +

  • Jim Radford +

  • Andrew Schein +

  • Skipper Seabold

  • Jacob Silterra +

  • Scott Sinclair

  • Alexis Tabary +

  • Martin Teichmann

  • Matt Terry +

  • Nicky van Foreest +

  • Jacob Vanderplas

  • Patrick Varilly +

  • Pauli Virtanen

  • Nils Wagner +

  • Darryl Wally +

  • Stefan van der Walt

  • Liming Wang +

  • David Warde-Farley +

  • Warren Weckesser

  • Sebastian Werk +

  • Mike Wimmer +

  • Tony S Yu +

Insgesamt 55 Personen haben zu dieser Version beigetragen. Personen mit einem "+" neben ihrem Namen haben zum ersten Mal einen Patch beigesteuert.