Я работаю с библиотекой 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.
Почему я получаю два разных результата?