我正在使用ASE库,在其中感兴趣的其中一个函数中,我们具有以下代码行:
bin_index_ic = np.floor(scaled_positions_ic*nbins_c).astype(int)
print(type(scaled_positions_ic), scaled_positions_ic.size)
的结果是:
例如,scaled_positions_ic的索引264为 数组([0.55555567,0.77777767,0.5] 并且nbins_c是[2 2 2]。
使用上面描述的ASE代码,数组scaled_positions_ic的索引264的结果是: 数组([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)具有使用std :: floor的C ++版本的代码。
为什么我得到两个不同的结果?