Примечания к выпуску SciPy 0.14.0#

SciPy 0.14.0 — это результат 8 месяцев напряженной работы. Он содержит много новых функций, множество исправлений ошибок, улучшенное покрытие тестами и лучшую документацию. В этом выпуске было несколько устареваний и изменений API, которые задокументированы ниже. Все пользователи рекомендуется обновиться до этого выпуска, так как в нем большое количество исправлений ошибок и оптимизаций. Более того, наше внимание разработки теперь переключится на выпуски исправлений ошибок в ветке 0.14.x и на добавление новых функций в ветке master.

Для этого выпуска требуется Python 2.6, 2.7 или 3.2-3.4 и NumPy 1.5.1 или выше.

Новые возможности#

scipy.interpolate улучшения#

Новая функция-обёртка scipy.interpolate.interpn для интерполяции на регулярных сетках была добавлена. interpn поддерживает линейную и интерполяцию ближайшего соседа в произвольных размерностях и сплайн-интерполяцию в двух измерениях.

Более быстрые реализации кусочно-полиномиальных функций в степенном и Бернштейновском полиномиальных базисах были добавлены как scipy.interpolate.PPoly и scipy.interpolate.BPoly. Новым пользователям следует использовать их вместо scipy.interpolate.PiecewisePolynomial.

scipy.interpolate.interp1d теперь принимает немонотонные входные данные и сортирует их. Если производительность критична, сортировку можно отключить с помощью нового assume_sorted ключевое слово.

Функциональность для вычисления производных двумерных сплайнов в scipy.interpolate был добавлен.

Новый класс scipy.interpolate.Akima1DInterpolator реализует схему кусочно-кубической полиномиальной интерполяции, разработанную Х. Акимой.

Функциональность для быстрой интерполяции на регулярных, неравномерно распределенных сетках в произвольных измерениях была добавлена как scipy.interpolate.RegularGridInterpolator .

scipy.linalg улучшения#

Новая функция scipy.linalg.dft вычисляет матрицу дискретного преобразования Фурье.

Функция оценки числа обусловленности для матричной экспоненты, scipy.linalg.expm_cond, был добавлен.

scipy.optimize улучшения#

Набор тестов для optimize, который можно запустить с помощью optimize.bench(), был добавлен.

scipy.optimize.curve_fit теперь имеет более управляемую оценку ошибки через absolute_sigma ключевое слово.

Поддержка передачи пользовательских методов минимизации в optimize.minimize() и optimize.minimize_scalar() был добавлен, в настоящее время особенно полезен для комбинирования optimize.basinhopping() с пользовательскими процедурами локальной оптимизации.

scipy.stats улучшения#

Новый класс scipy.stats.multivariate_normal с функциональностью для многомерных нормальных случайных величин была добавлена.

Много работы над scipy.stats Работа над фреймворком распределений завершена. Расчеты моментов (в основном асимметрии и эксцесса) исправлены и проверены, все примеры теперь запускаемы, и многие небольшие улучшения точности и производительности для отдельных распределений были объединены.

Новая функция scipy.stats.anderson_ksamp вычисляет k-выборочный тест Андерсона-Дарлинга для нулевой гипотезы о том, что k выборок происходят из одной и той же родительской совокупности.

scipy.signal улучшения#

scipy.signal.iirfilter и связанные функции для проектирования фильтров Баттерворта, Чебышева, эллиптических и Бесселя IIR теперь используют полюсно-нулевой формат ("zpk") внутри вместо преобразований в формат числитель/знаменатель. Точность создаваемых фильтров, особенно высокого порядка, значительно улучшилась в результате.

Фильтр Савицкого-Голея был добавлен с новыми функциями scipy.signal.savgol_filter и scipy.signal.savgol_coeffs.

Новая функция scipy.signal.vectorstrength вычисляет векторную силу, меру фазовой синхронизации, для набора событий.

scipy.special улучшения#

Функции scipy.special.boxcox и scipy.special.boxcox1p, которые вычисляют преобразование Бокса-Кокса, были добавлены.

scipy.sparse улучшения#

  • Значительное улучшение производительности при индексировании CSR, CSC и DOK.

  • При использовании Numpy >= 1.9 (который будет выпущен в MM 2014), разреженные матрицы работают корректно при передаче в аргументы np.dot, np.multiply и других универсальных функций. В более ранних версиях Numpy и Scipy результаты таких операций не определены и обычно неожиданны.

  • Разреженные матрицы больше не ограничены 2^31 ненулевых элементов. Они автоматически переключаются на использование 64-битного типа данных индекса для матриц, содержащих больше элементов. Пользовательский код, написанный с предположением, что разреженные матрицы используют int32 как тип данных индекса, продолжит работать, за исключением таких больших матриц. Код, работающий с большими матрицами, должен принимать индексы либо int32, либо int64.

Устаревшие функции#

anneal#

Функция глобальной минимизации scipy.optimize.anneal устарела. Все пользователи должны использовать scipy.optimize.basinhopping функция вместо.

scipy.stats#

randwcdf и randwppf функции устарели. Всем пользователям следует использовать специфичные для распределения rvs методы вместо этого.

Псевдонимы расчёта вероятности zprob, fprob и ksprob являются устаревшими. Вместо этого используйте sf методы соответствующих распределений или special функции напрямую.

scipy.interpolate#

PiecewisePolynomial класс устарел.

Обратно несовместимые изменения#

scipy.special.lpmn#

lpmn больше не принимает комплексные аргументы. Новая функция clpmn с равномерным комплексным аналитическим поведением была добавлена, и её следует использовать вместо этого.

scipy.sparse.linalg#

Собственные векторы в случае обобщенной проблемы собственных значений нормализуются к единичным векторам в 2-норме, а не следуют соглашению нормализации LAPACK.

Устаревшая обёртка UMFPACK в scipy.sparse.linalg был удалён из-за проблем с лицензией и установкой. Если доступен, scikits.umfpack все еще используется прозрачно в spsolve и factorized функций. В противном случае, в этих функциях вместо этого используется SuperLU.

scipy.stats#

Устаревшие функции glm, oneway и cmedian были удалены из scipy.stats.

stats.scoreatpercentile теперь возвращает массив вместо списка процентилей.

scipy.interpolate#

API для вычисления производных монотонной кусочно-интерполяции изменился: если p является PchipInterpolator объект, p.derivative(der) возвращает вызываемый объект, представляющий производную p. Для производных на месте используйте второй аргумент функции __call__ method: p(0.1, der=2) вычисляет вторую производную от p в x=0.1.

Метод p.derivatives был удален.

Прочие изменения#

Авторы#

  • Marc Abramowitz +

  • Anders Bech Borchersen +

  • Vincent Arel-Bundock +

  • Petr Baudis +

  • Max Bolingbroke

  • François Boulogne

  • Мэтью Бретт

  • Lars Buitinck

  • Evgeni Burovski

  • CJ Кэри +

  • Thomas A Caswell +

  • Павел Хойнацкий +

  • Phillip Cloud +

  • Stefano Costa +

  • David Cournapeau

  • David Menendez Hurtado +

  • Matthieu Dartiailh +

  • Christoph Deil +

  • Jörg Dietrich +

  • endolith

  • Francisco de la Peña +

  • Ben FrantzDale +

  • Jim Garrison +

  • André Gaul

  • Кристоф Голке

  • Ralf Gommers

  • Robert David Grant

  • Алекс Гриффинг

  • Blake Griffith

  • Yaroslav Halchenko

  • Андреас Хилболл

  • Kat Huang

  • Gert-Ludwig Ingold

  • James T. Webber +

  • Dorota Jarecka +

  • Todd Jennings +

  • Thouis (Ray) Jones

  • Juan Luis Cano Rodríguez

  • ktritz +

  • Jacques Kvam +

  • Эрик Ларсон +

  • Justin Lavoie +

  • Денис Лаксальд

  • Jussi Leinonen +

  • lemonlaug +

  • Тим Лесли

  • Alain Leufroy +

  • George Lewis +

  • Макс Линке +

  • Brandon Liu +

  • Benny Malengier +

  • Маттиас Кюммерер +

  • Cimarron Mittelsteadt +

  • Eric Moore

  • Andrew Nelson +

  • Niklas Hambüchen +

  • Joel Nothman +

  • Clemens Novak

  • Эмануэле Оливетти +

  • Штефан Отте +

  • peb +

  • Josef Perktold

  • pjwerneck

  • poolio

  • Жером Руа +

  • Carl Sandrock +

  • Andrew Sczesnak +

  • Shauna +

  • Fabrice Silva

  • Daniel B. Smith

  • Patrick Snape +

  • Thomas Spura +

  • Jacob Stevenson

  • Джулиан Тейлор

  • Tomas Tomecek

  • Richard Tsai

  • Jacob Vanderplas

  • Joris Vankerschaver +

  • Pauli Virtanen

  • Warren Weckesser

Всего 80 человек внесли вклад в этот релиз. Люди со знаком «+» рядом с именами внесли патч впервые. Этот список имен генерируется автоматически и может быть неполным.

Закрытые проблемы#

  • #1325: добавить пользовательский параметр axis в функцию dendrogram в scipy.cluster.hierarchy…

  • #1437: Неверный символ Похгаммера для отрицательных целых чисел (Trac #910)

  • #1555: scipy.io.netcdf утечка файловых дескрипторов (Trac #1028)

  • #1569: разреженная матрица не сработала с поэлементным умножением с использованием numpy.multiply()…

  • #1833: Разреженные матрицы ограничены 2^32 ненулевыми элементами (Trac #1307)

  • #1834: scipy.linalg.eig не нормализует собственный вектор, если задан B…

  • #1866: статистика для invgamma (Trac #1340)

  • #1886: stats.zipf предупреждения о плавающей точке (Trac #1361)

  • #1887: Stats continuous distributions - предупреждения о числах с плавающей точкой (Trac…)

  • #1897: scoreatpercentile() не обрабатывает пустые входные списки (Trac #1372)

  • #1918: splint возвращает некорректные результаты (Trac #1393)

  • #1949: kurtosistest не работает в mstats с ошибкой типа (Trac #1424)

  • #2092: scipy.test оставляет darwin27compiled_catalog, cpp и so файлы…

  • #2106: stats ENH: параметры формы в строках документации распределений (Trac…)

  • #2123: Некорректное поведение разреженных матриц в бинарной ufunc (Trac #1598)

  • #2152: Исправление mmio/fromfile на gzip в Python 3 (Trac #1627)

  • #2164: stats.rice.pdf(x, 0) возвращает nan (Trac #1639)

  • #2169: scipy.optimize.fmin_bfgs не обрабатывает функции с границами…

  • #2177: scipy.cluster.hierarchy.ClusterNode.pre_order возвращает IndexError…

  • #2179: coo.todense() вызывает segfault (Trac #1654)

  • #2185: Точность scipy.ndimage.gaussian_filter*() ограничена (Trac #1660)

  • #2186: scipy.stats.mstats.kurtosistest падает на одномерном входе (Trac #1661)

  • #2238: Отрицательное p-значение на hypergeom.cdf (Trac #1719)

  • #2283: возрастающий порядок в интерполяционных процедурах (Trac #1764)

  • #2288: mstats.kurtosistest некорректно преобразует в float и завершается ошибкой…

  • #2396: lpmn неверные результаты для |z| > 1 (Trac #1877)

  • #2398: ss2tf возвращает num как 2D массив вместо 1D (Trac #1879)

  • #2406: linkage не принимает строки Unicode в качестве имён методов (Trac #1887)

  • #2443: Проектирование IIR-фильтров не должно внутренне преобразовываться в tf-представление

  • #2572: метод класса solve объекта splu возвращает поврежденный или ложный...

  • #2667: stats бесконечный цикл?

  • #2671: .stats.hypergeom ошибка в документации в примечании о pmf

  • #2691: BUG scipy.linalg.lapack: potrf/ptroi интерпретируют свой параметр 'lower'...

  • #2721: Разрешить использование многоточия в срезе scipy.sparse

  • #2741: stats: устаревание и удаление псевдонимов для специальных функций

  • #2742: stats добавить rvs к распределению Райса

  • #2765: bugs stats entropy

  • #2832: argrelextrema возвращает кортеж из 2 пустых массивов, когда пики не найдены…

  • #2861: scipy.stats.scoreatpercentile сломан для вектора на

  • #2891: COBYLA успешное завершение при нарушении ограничений

  • #2919: сбой теста с текущей основной версией

  • #2922: ndimage.percentile_filter игнорирует аргумент origin для многомерных…

  • #2938: Операции с разреженными/плотными матрицами на месте не выполняются из-за __numpy_ufunc__

  • #2944: сборки MacPorts выдают 40 Мб предупреждений сборки

  • #2945: FAIL: test_random_complex (test_basic.TestDet)

  • #2947: FAIL: Тестирование некоторых тривиальных граничных случаев для savgol_filter()

  • #2953: Триангуляция Делоне в Scipy не ориентирована

  • #2971: ошибка в документации scipy.stats.mstats.winsorize

  • #2980: Проблемы при запуске, казалось бы, совершенно корректного примера

  • #2996: энтропия для rv_discrete некорректна?!

  • #2998: Исправить сравнения версий numpy

  • #3002: python setup.py install завершается с ошибкой

  • #3014: Ошибка в stats.fisher_exact

  • #3030: относительная энтропия с использованием scipy.stats.distribution.entropy, когда...

  • #3037: scipy.optimize.curve_fit приводит к неожиданному поведению при вводе…

  • #3047: mstats.ttest_rel axis=None, требует маскированный массив

  • #3059: BUG: Срезы разреженных матриц возвращают неверный dtype

  • #3063: ключевое слово range в binned_statistics некорректно

  • #3067: cumtrapz работает не так, как ожидалось

  • #3069: sinc

  • #3086: расчёт стандартной ошибки не согласован между 'stats' и 'mstats'

  • #3094: Добавить perm функция в scipy.misc и улучшение…

  • #3111: scipy.sparse.[hv]stack больше не учитывают параметр dtype

  • #3172: optimize.curve_fit использует другую номенклатуру, чем optimize.leastsq

  • #3196: scipy.stats.mstats.gmean фактически не принимает dtype

  • #3212: Скалярное произведение csr_matrix вызывает ошибку сегментации

  • #3227: ZeroDivisionError в broyden1, когда начальное предположение верно…

  • #3238: вывод lbfgsb не подавляется при disp=0

  • #3249: Разреженные матрицы min/max/и т.д. не поддерживают axis=-1

  • #3251: Проблема производительности cdist с метрикой ‘sqeuclidean’

  • #3279: logm не работает для сингулярной матрицы

  • #3285: signal.chirp(method=’hyp’) запрещает гиперболический подъем частоты

  • #3299: УТЕЧКА ПАМЯТИ: fmin_tnc

  • #3330: сбои тестов с текущей основной версией

  • #3345: изменение в scipy и/или numpy вызывает сбои тестов в другом…

  • #3363: splu не работает для невекторных входных данных

  • #3385: expit плохо обрабатывает большие аргументы

  • #3395: specfun.f не компилируется с MinGW

  • #3399: Ошибка в сообщении об ошибке в scipy.cluster.hierarchy.linkage

  • #3404: interpolate._ppoly не собирается с MinGW

  • #3412: Ошибки тестирования в signal

  • #3466: `scipy.sparse.csgraph.shortest_path` не работает на `scipy.sparse.csr_matrix` или `lil_matrix`

Pull requests#

  • #442: ENH: sparse: включить 64-битные индексные массивы & nnz > 2**31

  • #2766: DOC: удалить doc/seps/technology-preview.rst

  • #2772: TST: stats: Добавлен регрессионный тест для stats.wilcoxon. Закрывает…

  • #2778: Очистить stats._support, закрыть вопросы по обзору статистики

  • #2792: BUG io: исправлено закрытие файлового дескриптора для переменных netcdf

  • #2847: Распределение Райса: расширение до b=0, добавлен явный метод rvs.

  • #2878: [stats] исправить формулы для высших моментов распределения dweibull

  • #2904: ENH: моменты для распределения Ципфа

  • #2907: ENH: добавить информацию о покрытии с coveralls.io для запусков Travis.

  • #2932: BUG+TST: реализация setdiag для dia_matrix (Закрыть #2931)…

  • #2942: Различные исправления, указанные статическим анализом кода Eclipse PyDev

  • #2946: ENH: разрешение немонотонного ввода в interp1d

  • #2986: BUG: runtests: chdir away from root when running tests

  • #2987: DOC: linalg: не рекомендуется использовать np.linalg.norm

  • #2992: ENH: добавление параметра “limit” в вычисление алгоритма Дейкстры

  • #2995: ENH: Использование целочисленной формы

  • #3006: DOC: stats: добавить примечание о логарифмическом основании в документацию

  • #3007: DEP: stats: Устаревание randwppf и randwcdf

  • #3008: Исправить mstats.kurtosistest и покрытие тестами для skewtest/normaltest

  • #3009: Незначительная опечатка в reST

  • #3010: Добавить scipy.optimize.Result к документации API

  • #3012: Исправляет ошибку в документации

  • #3052: Улучшения соответствия PEP-8

  • #3064: Биннированная статистика

  • #3068: Исправлена проблема #3067: исправлен cumptrapz, который вызывал исключение при...

  • #3073: Читатель Arff с номинальным значением в 1 символ

  • #3074: Некоторая работа по поддержке

  • #3080: Обзор и очистка всех функций Бокса-Кокса

  • #3083: Bug: должен возвращать 0, если регионы не найдены

  • #3085: BUG: Использование zpk в проектировании фильтров IIR для повышения точности

  • #3101: немного рефакторинг тестов stats

  • #3112: ENH: реализация интерполяции Акимы в 1D

  • #3123: MAINT: более простой способ создания диапазонов из срезов

  • #3124: Поддержка файловых объектов для imread и imsave

  • #3126: pep8ify stats/distributions.py

  • #3134: MAINT: разделение distributions.py на три файла

  • #3138: очистить тесты для дискретных распределений

  • #3155: special: обработка граничного случая lambda=0 в pdtr, pdtrc и pdtrik

  • #3156: Переименовать optimize.Result в OptimizeResult

  • #3166: BUG: заставить curve_fit() работать с array_like входными данными. Закрывает gh-3037.

  • #3170: Исправлены проверки версий numpy

  • #3175: используйте numpy sinc

  • #3177: Обновление предупреждения о версии numpy, удаление импорта oldnumeric

  • #3178: DEP: удалить устаревшую обертку umfpack. Закрывает gh-3002.

  • #3179: DOC: добавить BPoly в документацию

  • #3180: Подавление предупреждений при запуске stats.test()

  • #3181: изменена функция sem в mstats для соответствия stats

  • #3182: Сделать тесты weave корректными

  • #3183: ENH: Добавлен k-выборочный тест Андерсона-Дарлинга в модуль stats

  • #3186: Исправление stats.scoreatpercentile

  • #3187: DOC: привести номенклатуру curve_fit в соответствие с leastsq

  • #3201: Добавлен ключевой параметр axis в функцию dendrogram

  • #3207: Сделать примеры в документации stats.distributions выполняемыми

  • #3218: BUG: integrate: Исправление обработки ленточного якобиана в "vode" и…

  • #3222: BUG: ограничить диапазоны входных данных в special.nctdtr

  • #3223: Исправление ошибок тестов с numpy master

  • #3224: Исправление переполнений int32 в sparsetools

  • #3228: DOC: tf2ss zpk2ss примечание о канонической форме контроллера

  • #3234: Добавить ссылки See Also и примеры графиков в проектирование фильтров *ord функции

  • #3235: Обновлена функция buttord для согласованности с другими…

  • #3239: исправление документации для pchip интерполяции

  • #3240: DOC: исправление ошибок ReST в строке документации BPoly

  • #3241: RF: проверить атрибут записи fileobject без записи

  • #3243: немного работ по поддержке в stats

  • #3245: BUG/ENH: stats: сделать замороженные распределения отдельными экземплярами

  • #3247: ENH функция для возврата nnz на строку/столбец в некоторых разреженных матрицах

  • #3248: ENH гораздо более эффективные разреженные min/max с осью

  • #3252: Быстрый sqeuclidean

  • #3253: FIX поддержка axis=-1 и -2 для разреженных методов reduce

  • #3254: TST тесты для неканонического ввода в операции с разреженными матрицами

  • #3272: BUG: sparse: исправление ошибок в dia_matrix.setdiag

  • : Величина последнего члена частичной суммы превышает допуски, поэтому оценка ошибки превышает допуски. Рассмотрите возможность увеличения: Также генерировать tar.xz при запуске paver sdist

  • #3286: DOC: обновлены примечания к выпуску 0.14.0.

  • #3289: TST: удалить небезопасное использование mktemp в тестах

  • #3292: MAINT: исправление обратно несовместимого изменения в stats.distributions.__all__

  • #3293: ENH: signal: Разрешить нарастание частоты в 'гиперболическом'...

  • #3302: ENH: добавлен аргумент dtype в stats.mstats.gmean и stats.mstats.hmean

  • #3307: DOC: добавление примечания о различных формах ba в tf2zpk

  • #3309: улучшения документации для scipy.stats.mstats.winsorize

  • #3310: ДОКУМЕНТАЦИЯ: уточнить матрицу против массива в строках документации mmio

  • #3314: BUG: исправить scipy.io.mmread() для gzipped файлов в Python3

  • #3323: ENH: Эффективная интерполяция на регулярных сетках в произвольных размерностях

  • #3332: DOC: очистить документацию scipy.special

  • #3335: ENH: улучшить производительность nanmedian

  • #3347: BUG: исправить использование np.max в stats.fisher_exact

  • #3356: ENH: sparse: ускорить индексацию и присваивание LIL через Cython

  • #3357: Исправление "imresize не работает с size = int"

  • #3358: MAINT: переименовать AkimaInterpolator в Akima1DInterpolator

  • #3366: WHT: sparse: переформатирование отступов dsolve/*.c *.h

  • #3367: BUG: sparse/dsolve: исправление ошибок порядка Fortran в плотных матрицах в superlu…

  • #3369: ENH minimize, minimize_scalar: Добавить поддержку пользовательских…

  • #3371: scipy.stats.sigmaclip не отображается в html-документации.

  • #3373: BUG: sparse/dsolve: обнаружение недопустимых параметров LAPACK в superlu...

  • #3375: ENH: sparse/dsolve: сделать факторы L и U в splu и spilu…

  • #3377: MAINT: сборка Travis одного таргета против Numpy 1.5

  • #3378: MAINT: fftpack: Удалить использование 'import *' в паре тестов…

  • #3381: MAINT: замена np.isinf(x) & (x>0) -> np.isposinf(x) для избежания...

  • #3383: MAINT: пропускать тесты float96 на платформах без float96

  • #3384: MAINT: добавить pyflakes в Travis-CI

  • #3386: BUG: стабильная оценка expit

  • #3388: BUG: SuperLU: исправление отсутствующего объявления dlamch

  • #3389: BUG: sparse: безопасное понижение 64-битных индексов до intp при необходимости

  • #3390: BUG: нелинейные решатели не сбиваются с толку удачной догадкой

  • #3391: TST: исправление ошибок тестов разреженных матриц из-за использования axis=-1,-2 в np.matrix.sum().

  • #3392: BUG: sparse/lil: исправить ошибки Cython в поиске объединённого типа

  • #3393: BUG: sparse/compressed: обход ошибки в np.unique в более ранних...

  • #3394: BUG: разрешение ClusterNode.pre_order() для не корневых узлов

  • #3400: BUG: опечатка в ValueError для cluster.linkage

  • #3402: BUG: special: В specfun.f заменить использование CMPLX на DCMPLX,…

  • #3408: MAINT: sparse: исправления совместимости с Numpy 1.5

  • #3410: MAINT: interpolate: исправить определения blas в _ppoly

  • #3411: MAINT: Исправления для Numpy 1.5 в interpolate

  • #3413: Исправлены дополнительные проблемы тестов со старыми версиями numpy

  • #3414: TST: signal: ослабить некоторые допуски ошибок в тестах фильтров…

  • #3415: MAINT: tools: автоматическое закрытие issue и pr для релиза…

  • #3440: MAINT: обернуть sparsetools вручную вместо использования SWIG

  • #3460: TST: открытие файла изображения в бинарном режиме

  • #3467: BUG: исправление валидации в csgraph.shortest_path