Примечания к выпуску SciPy 0.9.0#
SciPy 0.9.0 — это результат 6 месяцев напряжённой работы. Он содержит много новых функций, множество исправлений ошибок, улучшенное покрытие тестами и лучшую документацию. В этом выпуске было несколько устареваний и изменений API, которые задокументированы ниже. Всем пользователям рекомендуется обновиться до этого выпуска, так как в нём большое количество исправлений ошибок и оптимизаций. Более того, наше внимание разработки теперь переключится на выпуски с исправлениями ошибок в ветке 0.9.x и на добавление новых функций в основной ветке разработки.
Для этого выпуска требуется Python 2.4 - 2.7 или 3.1 - и NumPy 1.5 или выше.
Обратите внимание, что SciPy всё ещё считается имеющим статус «Бета», так как мы работаем над выпуском SciPy 1.0.0. Выпуск 1.0.0 станет важной вехой в развитии SciPy, после которой изменение структуры пакета или API станет гораздо сложнее. Хотя эти предварительные выпуски до 1.0 считаются имеющими статус «Бета», мы стремимся сделать их максимально свободными от ошибок.
Однако до выпуска версии 1.0 мы активно пересматриваем и уточняем функциональность, организацию и интерфейс. Это делается в рамках усилий сделать пакет максимально последовательным, интуитивно понятным и полезным. Для достижения этой цели нам нужна помощь сообщества пользователей. В частности, нам нужны отзывы по всем аспектам проекта — абсолютно по всем — от того, какие алгоритмы мы реализуем, до деталей сигнатур вызова наших функций.
Python 3#
Scipy 0.9.0 — первый выпуск SciPy с поддержкой Python 3. Единственный модуль,
который ещё не перенесён, это scipy.weave.
Местоположение исходного кода Scipy, которое будет изменено#
Вскоре после этого релиза SciPy перестанет использовать SVN в качестве системы контроля версий и перейдет на Git. Исходный код разработки SciPy с этого момента можно будет найти на
Новые возможности#
Триангуляции Делоне (scipy.spatial)#
Scipy теперь включает процедуры для вычисления триангуляции Делоне в N измерениях, основанные на Qhull библиотека вычислительной геометрии. Такие
вычисления теперь могут использовать новую scipy.spatial.Delaunay
интерфейс.
N-мерная интерполяция (scipy.interpolate)#
Поддержка интерполяции разрозненных данных теперь значительно
улучшена. Эта версия включает scipy.interpolate.griddata
функция, которая может выполнять линейную и интерполяцию ближайшего соседа для N-мерных разбросанных данных, в дополнение к кубической сплайн-интерполяции (C1-гладкой) в 2D и 1D. Также доступен объектно-ориентированный интерфейс к каждому типу интерполятора.
Решатели нелинейных уравнений (scipy.optimize)#
Scipy включает новые процедуры для решения нелинейных уравнений большого масштаба
в scipy.optimize. Реализованы следующие методы:
Newton-Krylov (
scipy.optimize.newton_krylov)(Обобщённые) секущие методы:
Методы Бройдена с ограниченной памятью (
scipy.optimize.broyden1,scipy.optimize.broyden2)Метод Андерсона (
scipy.optimize.anderson)
Простые итерации (
scipy.optimize.diagbroyden,scipy.optimize.excitingmixing,scipy.optimize.linearmixing)
The scipy.optimize.nonlin модуль был полностью переписан, и некоторые функции были объявлены устаревшими (см. выше).
Новые подпрограммы линейной алгебры (scipy.linalg)#
Scipy теперь содержит процедуры для эффективного решения систем треугольных уравнений (scipy.linalg.solve_triangular).
Улучшенные функции проектирования FIR-фильтров (scipy.signal)#
Функция scipy.signal.firwin был улучшен для возможности проектирования ФВЧ, полосовых, режекторных и многополосных КИХ-фильтров.
Функция scipy.signal.firwin2 была добавлена. Эта функция использует метод окон для создания линейно-фазового КИХ-фильтра с произвольной частотной характеристикой.
Функции scipy.signal.kaiser_atten и scipy.signal.kaiser_beta
были добавлены.
Улучшенные статистические тесты (scipy.stats)#
Новая функция scipy.stats.fisher_exact был добавлен, предоставляющий точный тест Фишера для таблиц сопряженности 2x2.
Функция scipy.stats.kendalltau был переписан, чтобы сделать его намного быстрее (O(n log(n)) против O(n^2)).
Устаревшие функции#
Устаревшие нелинейные решатели (в scipy.optimize)#
Следующие нелинейные решатели из scipy.optimize устарели:
broyden_modified(плохая производительность)broyden1_modified(плохая производительность)broyden_generalized(эквивалентноanderson)anderson2(эквивалентноanderson)broyden3(устарело новыми методами Бройдена с ограниченной памятью)vackar(переименовано вdiagbroyden)
Удалённые возможности#
Устаревшие модули helpmod, pexec и ppimport были удалены
из scipy.misc.
The output_type ключевое слово во многих scipy.ndimage функции интерполяции
были удалены.
The econ ключевое слово в scipy.linalg.qr был удалён. Та же
функциональность всё ещё доступна при указании mode='economic'.
Старое поведение correlate/convolve (в scipy.signal)#
Старое поведение для scipy.signal.convolve, scipy.signal.convolve2d,
scipy.signal.correlate и scipy.signal.correlate2d был устаревшим в
0.8.0 и теперь удалён. Convolve и correlate раньше меняли свои
аргументы местами, если второй аргумент имел размерность больше, чем первый, и
режим был относителен к входу с наибольшей размерностью. Текущее
поведение — никогда не менять входы местами, что ожидает большинство людей, и
как корреляция обычно определяется.
scipy.stats#
Многие функции в scipy.stats которые либо доступны из numpy, либо
были заменены, и были устаревшими с версии 0.7, были удалены:
std, var, mean, медиана, cov, corrcoef, z, zs, stderr,
samplestd, samplevar, pdfapprox, pdf_moments и erfc. Эти изменения
отражены в scipy.stats.mstats.
scipy.sparse#
Несколько методов классов разреженных матриц в scipy.sparse которые были
устаревшими с версии 0.7, были удалены: сохранить, rowcol, getdata,
listprint, ensure_sorted_indices, matvec, matmat и rmatvec.
Функции spkron, speye, spidentity, lil_eye и
lil_diags были удалены из scipy.sparse. Первые три функции
все еще доступны как scipy.sparse.kron, scipy.sparse.eye и
scipy.sparse.identity.
The dims и nzmax Ключевые слова были удалены из конструктора разреженной матрицы. colind и rowind атрибуты были удалены из CSR и CSC матриц соответственно.
scipy.sparse.linalg.arpack.speigs#
Дублированный интерфейс к библиотеке ARPACK был удалён.
Прочие изменения#
Изменения в интерфейсе ARPACK#
Интерфейс к процедурам вычисления собственных значений ARPACK в
scipy.sparse.linalg был изменен для большей надежности.
Подпрограммы собственных значений и SVD теперь вызывают ArpackNoConvergence если итерация по собственным значениям не сходится. Если требуются частично сходящиеся результаты, к ним можно получить доступ следующим образом:
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
Также было исправлено несколько ошибок.
Кроме того, подпрограммы были переименованы следующим образом:
eigen –> eigs
eigen_symmetric –> eigsh
svd –> svds