np.floor()和浮点除法的奇怪行为

侠客

这里发生了什么?

In [86]:  np.floor(10.0 * .91)
Out[86]:  9.0

In [87]:  np.floor(10.0 * .91)/10.0
Out[87]:  0.90000000000000002

为什么不0.9呢?

编辑:

我想做这样的事情:

#create 2d bins
bins = {}
for x in np.arange(-1,1, 0.1):
    for y in np.arange(-1,1, 0.1):
        bins[(x,y)] = 0

#count number of occurences in each bin
for x,y in np.random.randn(10,2):
    rounded = (np.floor(10.0 * x)/10.0, np.floor(10.0 * y)/10.0)
    bins[(x,y)] += 1   # I get an error here
纳幸

事实证明,float64与Python的相比,numpy具有用于转换为字符串的不同算法float

当字符串0.90000000000000002和0.9解析为float64时,它们最终将具有相同的位模式。

您可以确认np.floor(10.0 * .91)/10.0 == 0.9产量True

根本问题是,在将浮点数转换为字符串时,应指定多少个小数位?一些实现使用最小位数,以便将字符串解析为最接近的浮点值将产生相同的值。一些实现将为安全性提供额外的数字。

因为最终,float(“ 0.9”)实际上完全等于0.90000000000000002220446049250313080847263336181640625。所以从某种意义上说,两个答案都是正确的。


问答第二部分:您可以花时间弄清楚浮点的工作原理,也可以将整数存储桶用于字典。

换句话说,不是像这样-1.0, -0.9, -0.8, ..., 0.9的键,而是像键一样-10, -9, -8, ..., 9它应该避免将来出现很多问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

`np.where` 的奇怪用法

来自分类Dev

C ++ float和int除法奇怪的行为

来自分类Dev

解释散点图的np.polyfit和np.polyval

来自分类Dev

numpy:np.repeat和np.broadcast_to之间的区别

来自分类Dev

选择值np.nonzero()和〜np.isnan()的索引

来自分类Dev

解释散点图的np.polyfit和np.polyval

来自分类Dev

np.concatenate 和 np.hstack 的区别

来自分类Dev

np.nan 和 np.NaN 的区别

来自分类Dev

cython中的np.int,np.int_,int和np.int_t之间的区别?

来自分类Dev

numpy `np.array()[None]` 行为

来自分类Dev

np.save 正在将浮点数转换为奇怪的字符

来自分类Dev

python:使用 np.vectorize 和 np.meshgrid 得到一个奇怪的数组列表 - 误解

来自分类Dev

用np.nan填充嵌套的numpy数组时出现奇怪的行为

来自分类Dev

将公式传递给 np 包中的 npcdensbw() 函数时的奇怪行为

来自分类Dev

NP完整性和硬度分类

来自分类Dev

np转置和压缩无效

来自分类Dev

python函数和np.vectorize问题

来自分类Dev

np.array和set的交集

来自分类Dev

Matlab wrapToPi 和 python np.unwrap

来自分类Dev

Python:使用浮点数和np.savetxt保存字符串数据

来自分类Dev

Python:np.vectorize返回“浮点数”

来自分类常见问题

np.random.seed()和np.random.RandomState()之间的区别

来自分类Dev

np.uint8和np.int8的执行时间不同

来自分类Dev

将np.savetxt和np.loadtxt与多维数组一起使用

来自分类Dev

np.random.seed(int)和np.random.seed(array_like)之间的区别?

来自分类Dev

为什么np.std()和ivot_table(aggfunc = np.std)返回不同的结果

来自分类Dev

np.vstack和np.hstack在Python中如何工作?

来自分类Dev

np.linspace和np.arange有什么区别?

来自分类Dev

根据条件用np.select和np.where替换df中的值

Related 相关文章

热门标签

归档