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

Выпуск NumPy 1.16.4 исправляет ошибки, о которых сообщалось в версии 1.16.3, а также переносит несколько улучшений из основной ветки, которые кажутся уместными для серии выпусков, которая является последней, поддерживающей Python 2.7. Колеса на PyPI связаны с OpenBLAS v0.3.7-dev, что должно исправить проблемы на процессорах серии Skylake.

Разработчики, собирающие этот выпуск, должны использовать Cython >= 0.29.2 и, если используется OpenBLAS, OpenBLAS > v0.3.7. Поддерживаемые версии Python: 2.7 и 3.5-3.7.

Новые устаревания#

Флаг записи массивов, обёрнутых в C-API#

Когда массив создается из C-API для обертывания указателя на данные, единственное указание на возможность чтения-записи данных — это writeable флаг, установленный при создании. Опасно принудительно устанавливать флаг в записываемый. В будущем будет невозможно переключить флаг записи на True из python. Это устаревание не должно затрагивать многих пользователей, поскольку массивы, созданные таким образом, очень редки на практике и доступны только через C-API NumPy.

Примечания по совместимости#

Возможные изменения в потоке случайных чисел#

Из-за ошибок в применении логарифма к случайным числам с плавающей запятой, поток может измениться при выборке из np.random.beta, np.random.binomial, np.random.laplace, np.random.logistic, np.random.logseries или np.random.multinomial если в основном потоке случайных чисел MT19937 генерируется 0. Вероятность 1 из \(10^{53}\) вероятность этого события, и поэтому вероятность того, что поток изменится для любого заданного начального значения, чрезвычайно мала. Если в базовом генераторе встречается 0, то некорректное значение, произведённое (либо np.inf или np.nan) теперь удаляется.

Изменения#

numpy.lib.recfunctions.structured_to_unstructured не сжимает представления с одним полем#

Ранее structured_to_unstructured(arr[['a']]) привело бы к сжатому результату, несовместимому с structured_to_unstructured(arr[['a', b']]). Это было случайно. Прежнее поведение можно сохранить с помощью structured_to_unstructured(arr[['a']]).squeeze(axis=-1) или гораздо проще, arr['a'].

Участники#

Всего 10 человек внесли вклад в этот релиз. Люди со знаком "+" рядом с их именами внесли патч впервые.

  • Чарльз Харрис

  • Eric Wieser

  • Деннис Золло +

  • Hunter Damron +

  • Jingbei Li +

  • Кевин Шеппард

  • Matti Picus

  • Nicola Soranzo +

  • Себастьян Берг

  • Tyler Reddy

Объединенные pull request'ы#

Всего для этого релиза было объединено 16 pull-запросов.

  • #13392: BUG: В некоторых версиях PyPy отсутствует PyStructSequence_InitType2.

  • #13394: MAINT, DEP: Исправить устаревшее assertEquals()

  • #13396: BUG: Исправление structured_to_unstructured для типов с одним полем (обратный порт)

  • #13549: BLD: Снова сделать прохождение CI с pytest 4.5

  • #13552: TST: Зарегистрировать маркеры в conftest.py.

  • #13559: BUG: Удаляет ValueError для пустых kwargs в arraymultiter_new

  • #13560: BUG: Добавить TypeError к принимаемым исключениям в crackfortran.

  • #13561: BUG: Обработка подмассивов в descr_to_dtype

  • #13562: BUG: Защитить генераторы от log(0.0)

  • #13563: BUG: Всегда возвращать представления из structured_to_unstructured, когда…

  • #13564: BUG: Перехват stderr при проверке версии компилятора

  • #13565: BUG: longdouble(int) не работает

  • #13587: BUG: distutils/system_info.py исправление отсутствующего импорта subprocess (#13523)

  • #13620: BUG,DEP: Исправление установки флага writeable для массивов без base

  • #13641: MAINT: Подготовка к выпуску версии 1.16.4.

  • #13644: BUG: особый случай массивов объектов при выводе относительной и абсолютной ошибки