Примечания к выпуску SciPy 0.17.0#
SciPy 0.17.0 — это результат 6 месяцев напряженной работы. Он содержит много новых функций, множество исправлений ошибок, улучшенное покрытие тестами и лучшую документацию. В этом выпуске было несколько устареваний и изменений API, которые задокументированы ниже. Все пользователи рекомендуется обновиться до этого выпуска, так как есть большое количество исправлений ошибок и оптимизаций. Более того, наше внимание к разработке теперь переключится на выпуски с исправлениями ошибок в ветке 0.17.x и на добавление новых функций в основной ветке.
Для этого выпуска требуется Python 2.6, 2.7 или 3.2-3.5 и NumPy 1.6.2 или выше.
Основные моменты выпуска:
Новые функции для линейной и нелинейной оптимизации методом наименьших квадратов с ограничениями:
scipy.optimize.lsq_linearиscipy.optimize.least_squaresПоддержка подгонки с ограничениями в
scipy.optimize.curve_fit.Значительные улучшения в
scipy.stats, предоставляя множество функций с улучшенной обработкой входных данных, содержащих NaN или пустых, улучшенной документацией и согласованным поведением междуscipy.statsиscipy.stats.mstats.Значительные улучшения производительности и новая функциональность в
scipy.spatial.cKDTree.
Новые возможности#
scipy.cluster улучшения#
Новая функция scipy.cluster.hierarchy.cut_tree, который определяет дерево разрезов
из матрицы связей, был добавлен.
scipy.io улучшения#
scipy.io.mmwrite получила поддержку симметричных разреженных матриц.
scipy.io.netcdf получил поддержку маскирования и масштабирования данных на основе атрибутов
данных.
scipy.optimize улучшения#
Решатель задачи линейного назначения#
scipy.optimize.linear_sum_assignment является новой функцией для решения
линейной задачи о назначениях. Она использует венгерский алгоритм (Куна-Мункареса).
Оптимизация методом наименьших квадратов#
Новая функция для нелинейный была добавлена оптимизация методом наименьших квадратов с ограничениями: scipy.optimize.least_squares. Он предоставляет несколько методов:
Левенберга-Марквардта для неограниченных задач и два метода доверительной области для ограниченных. Кроме того, он предоставляет различные функции потерь.
Новые методы доверительной области также обрабатывают разреженные матрицы Якоби.
Новая функция для линейный была добавлена оптимизация методом наименьших квадратов с ограничениями: scipy.optimize.lsq_linear. Он предоставляет метод доверительной области, а также
реализацию алгоритма Bounded-Variable Least-Squares (BVLS).
scipy.optimize.curve_fit теперь поддерживает подгонку с ограничениями.
scipy.signal улучшения#
A mode ключевое слово было добавлено в scipy.signal.spectrogram, чтобы позволить ему возвращать другие спектрограммы, кроме спектральной плотности мощности.
scipy.stats улучшения#
Многие функции в scipy.stats получили nan_policy ключевое слово, которое
позволяет указать, как обрабатывать входные данные с NaN: распространять NaN,
вызывать ошибку или пропускать NaN.
Многие функции в scipy.stats были улучшены для корректной обработки входных
массивов, которые пусты или содержат infs/nans.
Ряд функций с одинаковым названием в scipy.stats и
scipy.stats.mstats были изменены для соответствия сигнатуры и поведения. См. gh-5474 подробности.
scipy.stats.binom_test и scipy.stats.mannwhitneyu получил ключевое слово
alternative, который позволяет указать проверяемую гипотезу.
В конечном итоге все функции проверки гипотез получат этот ключевой параметр.
Для методов многих непрерывных распределений теперь принимается комплексный ввод.
Матричное нормальное распределение реализовано как scipy.stats.matrix_normal.
scipy.sparse улучшения#
The ось ключевое слово было добавлено к разреженным нормам, scipy.sparse.linalg.norm.
scipy.spatial улучшения#
scipy.spatial.cKDTree была частично переписана для улучшения производительности, и в неё были добавлены несколько новых функций:
the
query_ball_pointметод стал значительно быстрееqueryиquery_ball_pointполучилn_jobsключевое слово для параллельного выполненияметоды build и query теперь освобождают GIL
полная поддержка сериализации
поддержка периодических пространств
the
sparse_distance_matrixметод теперь может возвращать и тип разреженной матрицы
scipy.interpolate улучшения#
Поведение за пределами границ scipy.interpolate.interp1d был улучшен.
Используйте двухэлементный кортеж для fill_value аргумент для указания отдельных
значений заполнения для входных данных ниже и выше диапазона интерполяции.
Линейные и ближайшие виды интерполяции scipy.interpolate.interp1d поддержка
экстраполяции через fill_value="extrapolate" ключевое слово.
fill_value также может быть установлен в массивоподобный объект (или кортеж из двух элементов
массивоподобных объектов для раздельных значений ниже и выше), если он правильно транслируется
на неинтерполированные размерности массива. Это неявно
поддерживалось предыдущими версиями scipy, но теперь поддержка формализована
и проверяется на совместимость перед использованием. Например, набор y значения для интерполяции с формой (2, 3, 5) интерполировано вдоль последней оси (2)
может принимать fill_value массив с формой () (синглтон), (1,),
(2, 1), (1, 3), (3,), или (2, 3); или может быть кортежем из 2 элементов
для указания отдельных нижней и верхней границ, где каждый из двух элементов кортежа
подчиняется правилам правильного вещания.
scipy.linalg улучшения#
Алгоритм по умолчанию для scipy.linalg.leastsq был изменён для использования
функции LAPACK *gelsd. Пользователи, желающие получить прежнее поведение,
могут использовать новый ключевой параметр lapack_driver="gelss" (допустимые значения: “gelss”, “gelsd” и “gelsy”).
scipy.sparse матрицы и линейные операторы теперь поддерживают matmul (@)
оператор, когда доступен (Python 3.5+). См.
[PEP 465](https://legacy.python.org/dev/peps/pep-0465/)
Новая функция scipy.linalg.ordqz, для QZ-разложения с переупорядочиванием, был добавлен.
Устаревшие функции#
scipy.stats.histogram устарел в пользу np.histogram, что
быстрее и предоставляет ту же функциональность.
scipy.stats.threshold и scipy.mstats.threshold устарели
в пользу np.clip. Подробности см. в issue #617.
scipy.stats.ss устарело. Это вспомогательная функция, не предназначенная для
предоставления пользователю. Кроме того, название неясно. Подробности см. в issue #663.
scipy.stats.square_of_sums устарело. Это также служебная функция, не предназначенная для использования пользователем. Подробности см. в issues #665 и #663.
scipy.stats.f_value, scipy.stats.f_value_multivariate,
scipy.stats.f_value_wilks_lambda, и scipy.mstats.f_value_wilks_lambda
устарели. Они связаны с ANOVA, для которой scipy.stats предоставляет
довольно ограниченную функциональность, и эти функции не очень полезны сами по себе.
Смотрите issues #660 и #650 для подробностей.
scipy.stats.chisqprob устарело. Это псевдоним. stats.chi2.sf
следует использовать вместо.
scipy.stats.betai устарело. Это псевдоним для special.betainc
который следует использовать вместо этого.
Обратно несовместимые изменения#
Функции stats.trim1 и stats.trimboth теперь убедитесь, что
обрезанные элементы являются наименьшими и/или наибольшими, в зависимости от случая.
Срезы без хотя бы частичной сортировки делались ранее, но не имели
смысла для несортированных входных данных.
Когда variable_names устанавливается в пустой список, scipy.io.loadmat теперь
корректно возвращает нулевые значения вместо всего содержимого MAT-файла.
Поэлементное умножение разреженных матриц теперь всегда возвращает разреженный результат. Ранее умножение разреженной матрицы на плотную матрицу или массив возвращало плотную матрицу.
Функция misc.lena был удален из-за несовместимости лицензий.
Конструктор для sparse.coo_matrix больше не принимает (None, (m,n))
для создания матрицы из нулей формы (m,n). Эта функциональность была устаревшей как минимум с 2007 года и уже была сломана в предыдущем релизе SciPy. Используйте coo_matrix((m,n)) вместо этого.
Обёртки на Cython в linalg.cython_lapack для подпрограмм LAPACK
*gegs, *gegv, *gelsx, *geqpf, *ggsvd, *ggsvp,
*lahrd, *latzm, *tzrqf были удалены, так как эти процедуры отсутствуют в новом релизе LAPACK 3.6.0. За исключением процедур *ggsvd и *ggsvp, все они были устаревшими в пользу процедур, которые в настоящее время присутствуют в наших Cython-обёртках LAPACK.
Поскольку LAPACK *gegv Подпрограммы были удалены в LAPACK 3.6.0. Соответствующие обёртки Python в scipy.linalg.lapack теперь устарели и будут удалены в будущем релизе. Исходные файлы для этих процедур временно включены как часть scipy.linalg
чтобы SciPy можно было собрать с версиями LAPACK, которые не предоставляют
эти устаревшие процедуры.
Прочие изменения#
Документация в форматах Html и pdf для версий разработки Scipy теперь автоматически пересобирается после каждого принятого pull request.
scipy.constants обновлено до рекомендованных значений CODATA 2014.
Использование scipy.fftpack функции в Scipy были изменены таким
образом, что PyFFTW может легко заменить
scipy.fftpack функции (с улучшенной производительностью). См.
gh-5295 подробности.
The imread функции в scipy.misc и scipy.ndimage были объединены, для
которых mode аргумент был добавлен в scipy.misc.imread. Также исправлены ошибки для форматов изображений RGB с 1 битом и индексированных.
runtests.py, скрипт разработки для сборки и тестирования Scipy, теперь позволяет
собирать параллельно с --parallel.