URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 118018
[ Назад ]

Исходное сообщение
"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"

Отправлено opennews , 30-Июл-19 10:03 
Состоялся (https://www.mail-archive.com/python-announce-list@pytho... релиз Python-библиотеки для научных вычислений NumPy 1.17 (http://www.numpy.org/), ориентированной на работу с многомерными массивами и матрицами, а также предоставляющей большую коллекцию функций с реализацией различных алгоритмов, связанных с использованием матриц. NumPy является одной из наиболее востребованных библиотек, применяемых для научных  расчётов. Код проекта написан на языке Python с применением оптимизаций на языке Си и распространяется (https://github.com/numpy/numpy/) под лицензией BSD.


Выпуск NumPy 1.17 примечателен (https://github.com/numpy/numpy/blob/master/doc/release/1.17.... внесением оптимизаций, существенно повышающих производительность некоторых операций, и прекращением поддержки Python 2.7. Для работы теперь необходимо наличие Python 3.5-3.7. Среди других изменения:


-   Реализация модуля FFT (Fast Fourier Transforms) для выполнения быстрого преобразования Фурье переведена с  fftpack на более быстрый и точный pocketfft (https://gitlab.mpcdf.mpg.de/mtr/pocketfft).
-  В состав включён новый расширяемый модуль
random, предлагающий на выбор четыре генератора псевдослучайных чисел (MT19937, PCG64, Philox и SFC64) и реализующий улучшенный метод формирования энтропии в условиях использования в параллельно выполняемых процессах.  
-  Добавлены алгоритмы поразрядной (radix) и гибридной  (timsort (https://ru.wikipedia.org/wiki/Timsort)) сортировки, которые автоматически выбираются в зависимости от типа данных.
-  По умолчанию включена возможность переопределения функций NumPy.

URL: https://www.mail-archive.com/python-announce-list@pytho...
Новость: https://www.opennet.me/opennews/art.shtml?num=51186


Содержание

Сообщения в этом обсуждении
"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 10:03 
FFT с помощью блустайна, джва года ждал!

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 11:49 
а может NumPy на swift переписать?

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Andrey Mitrofanov_N0 , 30-Июл-19 11:59 
> а может NumPy на swift переписать?

Нет, ты не "может".  Тебе
http://www.opennet.me/openforum/vsluhforumID3/117874.html#36
санитароы всё время мешают.


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено eRIC , 30-Июл-19 12:03 
> а может NumPy на swift переписать?

зачем Swift?


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 13:19 
Разработку интенсивных алгоритмов вычислительной математики лучше выполнять на С с тем, чтобы добиться 1) скорости, 2) кроссплатформенности. Для прочих языков достаточно иметь интерфейс. На что, собственно, и намекают в новости.

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


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 13:25 
C может и быстрый и кроссплатформенный, но есть сомнения по поводу математики в C, именно вопросы по поводу приведения типов и вещественных чисел

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 13:42 
Что означает в данном контексте "приведение типов"?

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Andrey Mitrofanov_N0 , 30-Июл-19 13:47 
> Что означает в данном контексте "приведение типов"?

ваня_конвертирует_BigFloat_в_1-битный_флоат.avi


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ivan_83 , 30-Июл-19 14:37 
Так в си вам никто не запрещает реализовывать любую математику с любым приведением типов.
Я для себя реализовал работу с длинными числами чтобы реализовать элиптическую крипту и она даже работает.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 13:44 
А какой в этом смысл? Нужно писать математические программы - используйте правильные языки типа Julia. То, что делает numpy у неё в базовой библиотеке. Если нужно машинное обучение - https://github.com/alan-turing-institute/MLJ.jl

И, самое главное, большинство библиотек для Julia написано на Julia, как бы странно для питонистов это ни звучало.


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ivan_83 , 30-Июл-19 14:38 
Всё написано на си (кроме того что написано на асме), нужно использовать только си, остальное лишние сущности :)

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 15:04 
> нужно использовать только си, остальное лишние сущности :)

Любой алгоритм можно выразить в терминах электронов, текущих по проводникам или полупроводникам процессора.... Зачем что-то большее?.....

А если серьёзно, то сущности должны быть ровно те, которые подходят данной предметной области. Любые другие сущности приводят к ошибкам, снижению скорости разработки и отладки. При всей незаменимости С в математике его используют лишь с горя, когда либо разрабы ничего больше не знают, либо надо писать нашлёпку к питону.

И не лезте с другими сущностями в чужой монастырь....


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ivan_83 , 30-Июл-19 16:47 
Как минимум затем что математика используется в криптографии, а криптография используется везде, в том числе и там где питон даже не запустится.

Если бы не синтаксис питона завязанные на количество пробелов я бы им скорее всего активно пользовался :)


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено имя , 30-Июл-19 15:38 
Вот и выросло поколение, которое про фортран даже не слышало.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ivan_83 , 30-Июл-19 16:49 
К сожалению слышало.
Насколько помню этот самый numpy его юзает через *BLAS прослойку, из за этого приходится собирать и таскать целый gcc.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 18:40 
Не представляет никакой проблемы совместное использование Фортрана и С.

По секрету для обучающихся. Не представляет никакой проблемы математика на С и интерфейс пользлвателя, скажем, на Visual Basic for Application.


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ivan_83 , 01-Авг-19 15:27 
Плевать на фортран, мне он мешается только тем что ради него пол часа гцц компеляется.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 14:43 
Питономатики, подскажите пожалуйста как это полечить:
$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 148.7-48.7

99.99999999999999

Как быстрофикс, я предлагаю переписать кусок программы на С, собрать *.so и вызвать через CDLL. Может есть какие-то биндинги, типа GMP, только живые и покрывающие все арифметические действия? Должен же быть менее костыльный способ...


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Andrey Mitrofanov_N0 , 30-Июл-19 14:47 
> Питономатики, подскажите пожалуйста как это полечить:
> $ python3
>>>> 148.7-48.7
> 99.99999999999999
> Как быстрофикс, я предлагаю переписать

Пс-сст, пацанчик, возьми немного NumPy, недорого !


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 31-Июл-19 15:14 
>>> numpy.sum([148.7, -48.7])

99.999999999999986

>>> gmpy2.sub(148.7, 48.7)

mpfr('99.999999999999986')
>>> gmpy2.add(148.7, -48.7)

mpfr('99.999999999999986')


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Мама , 30-Июл-19 14:56 
Аноним открывает для себя волшебный мир арифметики с плавающей точкой.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Иваныч , 01-Авг-19 02:51 
Мне нравится когда числа с плавающей точкой используются в качестве примера ущербности JS. Не то чтобы там костылей не было, их даже сверх, но использовать числа с плавающей точкой как пример ущербности любого ЯП это уровень.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено n80 , 30-Июл-19 15:03 
> Питономатики, подскажите пожалуйста как это полечить:
> $ python3
> Python 3.6.8 (default, Jan 14 2019, 11:02:34)
> [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> 148.7-48.7
> 99.99999999999999

Добро пожаловать в увлекательный мир чисел с плавающей точкой. Это нормальное поведение для float/double, в C то же самое, даже в железе так (в смысле, двоичные дроби под капотом, в которые не любые десятичные переводятся точно).

Если хочется работать именно с десятичными дробями вместо двоичных - есть модуль decimal в стандартной библиотеке.
А если просто вывод не нравится - есть функция round или указание ширины вывода (как в C!):

In [1]: a = 148.7
In [2]: b = 48.7
In [3]: a - b
Out[3]: 99.99999999999999

In [4]: round(a - b, 2)
Out[4]: 100.0

In [5]: round(a - b, 3)
Out[5]: 100.0

In [6]: '%.2f' % (a - b)
Out[6]: '100.00'


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 31-Июл-19 15:25 
Спасибо! Помогло.

Именно для этого случая:
https://docs.python.org/2/library/decimal.html

>>> from decimal import *
>>> getcontext().prec = 10
>>> Decimal(148.7) - Decimal(48.7)

Decimal('100.000')

Правда, точность пришлось указать пониже.


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено n80 , 01-Авг-19 01:48 
Только вот на вход в Decimal лучше строку подавать (кавычки добавить), а не float, а то будет двойное преобразование (сначала при разборе скрипта будет преобразование из десятичной записи в питоновский float, который соответствует сишному double, потом из этого float в структуру внутри объекта типа Decimal), потеря точности и боль-отчаяние. См.:

In [2]: import decimal

In [3]: decimal.Decimal(7500.42)
Out[3]: Decimal('7500.420000000000072759576141834259033203125')

In [4]: decimal.Decimal('7500.42')
Out[4]: Decimal('7500.42')


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним84701 , 30-Июл-19 15:15 
> Питономатики, подскажите пожалуйста как это полечить:
> $ python3
> Python 3.6.8 (default, Jan 14 2019, 11:02:34)
> [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> 148.7-48.7
> 99.99999999999999

Например прочитать https://docs.python.org/3/tutorial/floatingpoint.html


>>> format(148.7-48.7,'.2f')

'100.00'
>>> format(148.7-48.7,'.10f')

'100.0000000000'
>>> format(148.7-48.7,'.20f')

'99.99999999999998578915'

> Как быстрофикс, я предлагаю переписать кусок программы на С, собрать *.so

Вы не поверите, но:


% cat arith.c &&  gcc -Wall -Wextra -O2  -std=c99 arith.c && ./a.out
#include <stdio.h>
int main(void) {
    double res = 148.7 - 48.7;
    printf("\n%f, %.13f, %.14f", res, res, res);
    return 0;
}
100.000000, 100.0000000000000, 99.99999999999999

Ну и раз сегодня такой день, то открою страшную тайну:
https://github.com/python/cpython/tree/master/Python
>  Python 60.8% C 31.9%
>

Мне жаль :(


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено аноним3 , 30-Июл-19 18:17 
Python 3.5.2 (default, Feb 23 2018, 06:12:47)
[GCC 5.4.1 20170404 ] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 147.8-47.8

100.00000000000001
и такое бывает)))


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 30-Июл-19 18:43 
Про MACHEPS слышали? Так называют наименьшее число с десятичной точкой, которое способна различить конкретная машина. Рекомендуется вычислить его до любого полезного вычисления и далее использовать для проверки значимости.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ordu , 30-Июл-19 22:07 
В математике 99.(9)==100. Ряд 9/10+9/10^2+9/10^3 сходится к 1. Это известный и неустранимый косяк позиционной системы счисления: некоторые числа имеют больше одного способа записи. В мире вычислений с ограниченной точностью, ситуация усугубляется ограниченной точностью.

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено EnemyOfDemocracy , 31-Июл-19 02:23 
Теперь понятно, почему теперь банки кофе продаются не 100 грамм, а 90 за ту же цену. Математика!

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Andrey Mitrofanov_N0 , 31-Июл-19 09:10 
>не 100 грамм, а 90 за ту же цену.

А вот это уже ZOG, рептилоиды, ротшильды и заговор.  Как Вы не понимаете!7

>Математика!


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Иваныч , 01-Авг-19 02:52 
Американцы!

"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Andrey Mitrofanov_N0 , 31-Июл-19 09:08 
>Это известный и неустранимый
> косяк позиционной системы счисления: некоторые числа имеют больше одного способа записи.

Не-е-е, неустранимы дураки в интернетах, ...

...а это _тупо_ разница в точности представления _дробей_ конечными по длинне дробями с другим, не кратным, основанием.  

При переводе "точной" десятичной записи в "двоичную" плавучку "в половине случаев"(ТМ) получается бесконечная дробь (а-ля 1.3 = 0.(3)) и...
  та-да-а-а!!
...ошибка округления.

Вот, блин, развели детсад.


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Ordu , 31-Июл-19 12:12 
>>Это известный и неустранимый
>> косяк позиционной системы счисления: некоторые числа имеют больше одного способа записи.
> Не-е-е, неустранимы дураки в интернетах, ...

Совершенно верно.


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 01-Авг-19 00:09 
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (- 148.7 48.7)
100.0
*

:-)


"Выпуск Python-библиотеки для научных вычислений NumPy 1.17.0"
Отправлено Аноним , 05-Авг-19 00:40 
А что pocketfft лучше чем fftw?