LINUX.ORG.RU

NumPy 1.6.0 - расширение языка Python для научных вычислений

 , , , , , , ,


0

1

14 мая 2011 года стала доступной для загрузки стабильная версия 1.6.0 расширения языка Python для научных вычислений - NumPy.

NumPy содержит функции для операций с многомерными массивами и матрицами, а также стандартные функции линейной алгебры, преобразования Фурье, генераторы случайных чисел и инструменты для интеграции C/C++ и Fortran кода.

NumPy был разработан на базе кода двух пакетов для Python: Numeric и Numarray и является неотъемлемой базовой частью проекта SciPy - набора библиотек для вычислений в прикладной математике и науке на языке Python.

Работа над Numeric и Numarray прекратилась в 2005 и 2006 годах соответственно, и теперь NumPy рекомендуется для их замены.

Вычислительная сила NumPy заключается в интерпретации большинства вычислительных алгоритмов в операции над массивами и матрицами, что уменьшает проигрыш NumPy в быстродействии компилируемым языкам, таким как C или Fortran.
Этим NumPy очень напоминает интерпретируемый язык MATLAB'a и потому считается одной из его перспективных альтернатив, конечно, в комплекте со специализированными пакетами для Python, такими как вышеупомянутый SciPy, matplotlib, GMPY и другими.

Функции линейной алгебры в NumPy основаны на коде библиотеки LAPACK.

NumPy 1.6.0 совместим и с Python 2.4 - 2.7, и с Python 3.1 - 3.2.
Среди основных изменений в этом выпуске:

  • новый итератор, увеличивающий быстродействие большого количества функций
  • добавление поддержки 16-битного формата чисел с плавающей точкой половинной точности - IEEE 754-2008 binary16 (half precision), как тип данных numpy.half
  • добавлены полиномы Лежандра (Legendre), Лягерра (Laguerre), Эрмита (Hermite)
  • поддержка генератором F2py (Fortran to Python) массивов с динамическими размерами (assumed shape arrays) по стандарту Fortran 90
  • дополнения в C API
  • добавление ряда новых функций и замена части старых

С полным списком изменений можно ознакомиться в архиве с исходными кодами или на странице загрузки на sourceforge.net.

Numpy распространяется под лицензией BSD.
Кроме исходных кодов предоставляются также бинарные сборки для ОС Windows и Mac OS X.

>>> Исходный код NumPy

>>> Краткий список изменений

>>> Веб-страница NumPy

★★★

Проверено: mono ()

Ну ура же!

Наконец-то 3.1... И half-prec тоже хорошо, да.

RaySlava ()

Я бы спросил, чем оно лучше APL и Fortran, если бы сам не использовал активно :)

добавление поддержки 16-битного формата чисел с плавающей точкой половинной точности - IEEE 754-2008 binary16 (half precision), как тип данных numpy.half

добавлены полиномы Лежандра (Legendre), Лягерра (Laguerre), Эрмита (Hermite)

поддержка генератором F2py (Fortran to Python) массивов с динамическими размерами (assumed shape arrays) по стандарту Fortran 90

Это просто отлично.

buddhist ★★★★★ ()

Спасибо за отлично оформленную новость (:

pevzi ★★★★★ ()

Кстати, а зачем нужен GMPY? Питон же из коробки может с длинной арифметикой работать.

pevzi ★★★★★ ()
Ответ на: комментарий от RaySlava

Сударь, Питон 3.1 поддерживался ещё в 1.5.

Да, за новость спасибо и оформлена она хорошо.

Использую numpy+scipy+matplotlib больше двух лет для научных расчётов заместо Фортрана, которым пользовался раньше.

Vudod ★★★★★ ()
Ответ на: комментарий от Vudod

Десятилетиями вылизываемый язык променять на интерпретируемое динамически типизированные гомно. Супер.

anonymous ()
Ответ на: комментарий от anonymous

Десятилетиями вылизываемый язык променять на интерпретируемое динамически типизированные гомно. Супер.

В науке важна быстрота и простота использования. Применение numpy делает производительность Питона достаточною. И да, Питон тоже не вчера родился, весьма приятный язык.

Кстати, если считать с Фортрана 90, принятого в качестве стандарта в 1991 году, то Питон ему почти ровесник. Согласитесь, что fixed form, или Фортран 77, не говоря уже про более ранние версии, к современному Фортрану не имеет прямого отношения.

Vudod ★★★★★ ()
Ответ на: комментарий от pevzi

Мне тоже интересно. На сайте gmpy написано «Last updated on: 2003, Aug 8; for GMPY release: 1.0 alpha», зачем труп откапывать было?

provaton ★★★★★ ()

Ещё бы символьные вычисления добавить

luke ★★★ ()
Ответ на: комментарий от luke

Для символьных можно sympy юзать, правда оно пока сыровато местами.

pevzi ★★★★★ ()
Ответ на: комментарий от anonymous

Octave и matlab - тоже ведь «интерпретируемое, динамически типизированное говно». Инфа 100%!

anonymous ()
Ответ на: комментарий от pevzi

> Кстати, а зачем нужен GMPY? Питон же из коробки может с длинной арифметикой работать.

Кстати, а зчем нужен кэш процессора? Оперативная память из коробки может данные хранить =)

segfault ★★★★★ ()

Лучше б запилили всю математику на C/Fortran/Assembler, а в питон биндинги прокинули. Результат был бы тот же, только без тормозов. Часто ли нужен кросс-платформенный математический софт?

segfault ★★★★★ ()
Ответ на: комментарий от segfault

Так там всё критичное к производительности на С написано.

Begemoth ★★★★★ ()
Ответ на: комментарий от luke

> максима лучше?

Честно, не в курсе. Но вот то, что с интегралами у SymPy проблемы, и периодически забавные баги выскакивают — это да, есть такое.

pevzi ★★★★★ ()

Замечательная штука, новость порадовала.

hexenlord ()
Ответ на: комментарий от Begemoth

>Так там всё критичное к производительности на С написано.

Так тем более нет смысла всю библиотеку делать на интерпретируемом языке.

argin ★★★★★ ()
Ответ на: комментарий от argin

>>Так там всё критичное к производительности на С написано.

Так тем более нет смысла всю библиотеку делать на интерпретируемом языке.

Сказано же - она не вся на интерпретируемом языке.

tailgunner ★★★★★ ()
Ответ на: комментарий от argin

Посмотрите исходники и удивитесь. Ну или новость прочитайте (там где о LAPACK речь идет)

ogronom ()

Чтоб больше не было вопросов

$ wget http://sourceforge.net/projects/numpy/files/NumPy/1.6.0/numpy-1.6.0.tar.gz
$ tar xvfz numpy-1.6.0.tar.gz
$ cd numpy-1.6.0
$ find -name *.c
./numpy/lib/src/_compiled_base.c
./numpy/numarray/_capi.c
./numpy/linalg/dlapack_lite.c
./numpy/linalg/dlamch.c
./numpy/linalg/f2c_lite.c
./numpy/linalg/lapack_litemodule.c
./numpy/linalg/zlapack_lite.c
./numpy/linalg/python_xerbla.c
./numpy/linalg/blas_lite.c
./numpy/random/mtrand/distributions.c
./numpy/random/mtrand/randomkit.c
./numpy/random/mtrand/mtrand.c
./numpy/random/mtrand/initarray.c
./numpy/core/src/umath/umathmodule_onefile.c
./numpy/core/src/umath/ufunc_object.c
./numpy/core/src/npymath/_signbit.c
./numpy/core/src/npymath/halffloat.c
./numpy/core/src/multiarray/dtype_transfer.c
./numpy/core/src/multiarray/getset.c
./numpy/core/src/multiarray/calculation.c
./numpy/core/src/multiarray/conversion_utils.c
./numpy/core/src/multiarray/hashdescr.c
./numpy/core/src/multiarray/flagsobject.c
./numpy/core/src/multiarray/multiarraymodule_onefile.c
./numpy/core/src/multiarray/methods.c
./numpy/core/src/multiarray/multiarraymodule.c
./numpy/core/src/multiarray/common.c
./numpy/core/src/multiarray/sequence.c
./numpy/core/src/multiarray/iterators.c
./numpy/core/src/multiarray/shape.c
./numpy/core/src/multiarray/datetime.c
./numpy/core/src/multiarray/numpymemoryview.c
./numpy/core/src/multiarray/number.c
./numpy/core/src/multiarray/numpyos.c
./numpy/core/src/multiarray/usertypes.c
./numpy/core/src/multiarray/convert_datatype.c
./numpy/core/src/multiarray/refcount.c
./numpy/core/src/multiarray/ucsnarrow.c
./numpy/core/src/multiarray/arrayobject.c
./numpy/core/src/multiarray/item_selection.c
./numpy/core/src/multiarray/ctors.c
./numpy/core/src/multiarray/descriptor.c
./numpy/core/src/multiarray/buffer.c
./numpy/core/src/multiarray/convert.c
./numpy/core/src/multiarray/scalarapi.c
./numpy/core/src/multiarray/mapping.c
./numpy/core/src/multiarray/nditer_pywrap.c
./numpy/core/include/numpy/fenv/fenv.c
./numpy/core/blasdot/_dotblas.c
./numpy/distutils/tests/swig_ext/src/example.c
./numpy/distutils/mingw/gfortran_vs2003_hack.c
./numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c
./numpy/f2py/src/fortranobject.c
./numpy/fft/fftpack_litemodule.c
./numpy/fft/fftpack.c
./doc/pyrex/numpyx.c
adriano32 ★★★ ()
Ответ на: комментарий от anonymous

>Octave и matlab - тоже ведь «интерпретируемое, динамически типизированное говно». Инфа 100%!

ну ведь говно же.

dmn ()

А на сколько вообще распространён Python среди учёных?

bbk123 ★★★★★ ()
Ответ на: комментарий от ogronom

новость я читал до конца а исходники надо смотреть тогда, когда это имеет смысл.

а мои друзья например предпочитают свои программки писать, нежели использовать подобные библиотеки

argin ★★★★★ ()
Ответ на: Чтоб больше не было вопросов от adriano32

Не хочу сказать ничего плохого про оформление новости.

Вычислительная сила NumPy заключается в интерпретации большинства вычислительных алгоритмов в операции над массивами и матрицами...

может для тех кто в курсе этой библиотеки эта фраз несёт конкретный смысл - для меня она непонятна, а потому вопрос о смысле научной библиотеки на питоне сразу возникает. И демонстрация множества *.с файлов только усиливает вопрос о том, что в библиотеке на с, а что на питоне. Первая мысль которая приходит в голову, о том, что на питоне должны быть биндинги к с-файлам входит в смысловое противоречие со всем текстом новости и конкретно процитированной мной фразой.

В любом случае это не критика оформления новости, а обсуждение или даже просто вопрос - т.к совсем не факт, можно ли весь объём информации засунуть в текст новости, что бы избежать подобных вопросов.

argin ★★★★★ ()
Ответ на: комментарий от argin

Я им сочувствую. Они столько времени тратят на написание того, что уже есть в lapack...

Pythonist ()
Ответ на: комментарий от Pythonist

Они его просто юзают:

Функции линейной алгебры в NumPy основаны на коде библиотеки LAPACK.

pylin ★★★★★ ()
Ответ на: комментарий от segfault

Спасибо, Капитан Очевидность! Они так и сделали, к твоему сведению.

anonymous ()
Ответ на: комментарий от argin

> а мои друзья например предпочитают свои программки писать,

нежели использовать подобные библиотеки

Ты с Kazushige Goto дружишь? Уважаю.

anonymous ()
Ответ на: комментарий от Pythonist

нет, столько они не пишут

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

argin ★★★★★ ()
Ответ на: комментарий от argin

В википедии про NumPy пишут ещё непонятнее.

ados ★★★★★ ()
Ответ на: комментарий от ados

В смысле очень похоже на адаптированную х*ту с педивикии.

ados ★★★★★ ()
$ pacman -Qi lapack|grep Треб
Требуется пакетами    : octave  python2-numpy  python3-numpy  r  scilab

У матан-опенсорса единое ядро.

ados ★★★★★ ()
Ответ на: комментарий от bbk123

>А на сколько вообще распространён Python среди учёных?

создается впечатление, что практически основной язык.

dmn ()
Ответ на: комментарий от ados

$ pacman -Qi lapack|grep Треб Требуется пакетами : octave python2-numpy python3-numpy r scilab

Требуется пакетами

пакетами

Убить надмозга.

anonymous ()
Ответ на: комментарий от segfault

Лучше б запилили всю математику на C/Fortran/Assembler, а в питон биндинги прокинули. Результат был бы тот же, только без тормозов. Часто ли нужен кросс-платформенный математический софт?

там всё так и сделали *SURPRISE*

shty ★★★★★ ()
Ответ на: комментарий от dmn

>> А на сколько вообще распространён Python среди учёных?

создается впечатление, что практически основной язык.


Местами очень популярен. Местами нет. Зависит от области применения.

Tester ★★★ ()
Ответ на: комментарий от Tester

А на сколько вообще распространён Python среди учёных?

создается впечатление, что практически основной язык.

Местами очень популярен. Местами нет. Зависит от области применения.

У нас кроме меня ещё только 2 человека в универе активно им пользуются (впрочем, я знаю около 30% всех преподавателей профильных факультетов). Хотя из Нижнего знаю нескольких.

Vudod ★★★★★ ()

Привет, ребята! Надо сделать вот такую операцию с вектором (matlab код):

V = [1 2 3 4 5]; % вектор-строка
M = V([1 1 1 1 1],:) % делаем матрицу 5x5

% вот такой результат результат:
M = 
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

Короче, надо сделать из вектора матрицу. Эта операция очень часто используется для векторизации.

Гуру numpy, подскажите, как сделать такую операцию с array в numpy. Читал тут http://www.scipy.org/NumPy_for_Matlab_Users, ничего не вычитал.

neuron ()
Ответ на: комментарий от neuron

m = v * ones((5, 1));

Для векторов x, y получить матрицу x1 * y1 x2 * y1 ... xn * y1 ... x1 * ym x2 * ym ... xn * ym

либо x * y.reshape((-1, 1)), либо multiply.outer(y, x)

Pythonist ()
Ответ на: комментарий от pylin

Ответ на: комментарий от argin 14.05.2011 23:44:20 [update page]

Я им сочувствую. Они столько времени тратят на написание того, что
уже есть в lapack...

Erm?

Pythonist ()
Ответ на: комментарий от Pythonist

Да я уже нашёл нужную функцию.

В NumPy она tile почему-то называется. :) В матлабе это repmat. :)

neuron ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.