Почему функция numpy floor дает разные результаты? - PullRequest
1 голос
/ 14 июля 2020

Я работаю с библиотекой ASE, где в одной из интересующих меня функций у нас есть эта строка кода:

bin_index_ic = np.floor(scaled_positions_ic*nbins_c).astype(int)

Результат print(type(scaled_positions_ic), scaled_positions_ic.size): 1296, а тот же отпечаток с nbins_ c - (3,).

Например, индекс 264 scaled_positions_i c - это массив ([0.55555567, 0.77777767, 0.5], а nbins_ c - [2 2 2].

Результат с кодом ASE, описанным выше, с индексом 264 массива scaled_positions_i c: array ([1, 1, 0])

Я получил другой результат с примером, который я построил в Подсказка Python. Обе версии python и numpy одинаковы, так как я использую один и тот же venv. Вот результат подсказки python:

>>> type(a)
<class 'numpy.ndarray'>
>>> print(a)
[0.55555567 0.77777767 0.5       ]
>>> type(b)
<class 'numpy.ndarray'>
>>> b
array([2, 2, 2])
>>> np.floor(a * b).astype(int)
array([1, 1, 1])

Кроме того, я получаю (1, 1, 1) с версией этого кода на C ++, в которой используется std :: floor.

Почему я получаю два разных результата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...