在-0.和+0.之间存在的问题是浮动应该如何工作的规范(IEEE754)的一部分。在某些情况下,人们需要这种区别。例如,请参见在the docs for ^{}中链接到的文档。

值得注意的是,两个0应该比较为相等,所以np.array(-0.)==np.array(+0.)

# True

也就是说,我认为这个问题更可能与您的唯一性比较有关。例如:a = np.array([-1., -0., 0., 1.])

np.unique(a)

# array([-1., -0., 1.])

如果要将数字保留为浮点,但所有零都相同,可以使用:x = np.linspace(-2, 2, 6)

# array([-2. , -1.2, -0.4, 0.4, 1.2, 2. ])

y = x.round()

# array([-2., -1., -0., 0., 1., 2.])

y[y==0.] = 0.

# array([-2., -1., 0., 0., 1., 2.])

# or

y += 0.

# array([-2., -1., 0., 0., 1., 2.])

不过,请注意,您确实需要做这一点额外的工作,因为您正试图避免使用浮点规范。

还要注意,这不是由于舍入误差造成的。例如np.fix(np.array(-.4)).tostring().encode('hex')

# '0000000000000080'

np.fix(np.array(-0.)).tostring().encode('hex')

# '0000000000000080'

也就是说,得到的数字完全相同,但是np.fix(np.array(0.)).tostring().encode('hex')

# '0000000000000000'

是不同的。这就是为什么你的方法不起作用的原因,因为它比较的是数字的二进制表示,这对两个零是不同的。因此,我认为问题更多的是比较的方法,而不是比较浮点数的唯一性的一般思想。

各种方法的快速计时测试:data0 = np.fix(4*np.random.rand(1000000,)-2)

# [ 1. -0. 1. -0. -0. 1. 1. 0. -0. -0. .... ]

N = 100

data = np.array(data0)

print timeit.timeit("data += 0.", setup="from __main__ import np, data", number=N)

# 0.171831846237

data = np.array(data0)

print timeit.timeit("data[data==0.] = 0.", setup="from __main__ import np, data", number=N)

# 0.83500289917

data = np.array(data0)

print timeit.timeit("data.astype(np.int).astype(np.float)", setup="from __main__ import np, data", number=N)

# 0.843791007996

我同意@senderle的观点,如果您想要简单而精确的比较,并且可以使用int,那么int通常会更容易。但如果你想要独特的浮动,你也应该能够做到这一点,虽然你需要做得更仔细一点。浮动的主要问题是,可以有一些小的差异,这些差异可以从计算中引入,并且不会出现在正常的print中,但这并不是一个巨大的障碍,尤其是对于合理范围的浮动,在round, fix, rint之后。

python删除负数负号_在numpy中将负数舍入为零时,如何消除多余的负号?相关推荐

  1. python判断正数和负数教案_最新正数和负数教案

    精品文档 精品文档 正数和负数教案 一. 学习目标 1. 在了解相反意义量的基础上,使学生了解正负数的概念和学习正负数的意义. 2. 使学生能正确判断一个数是正数还是负数,明确零既不是正数也不是负数. ...

  2. python删除指定行_关于csv:删除python中的特定行和对应文件

    我想删除90%的"转向"值等于0的行.这三个图像都有一个对应的图像文件,中间,左边和右边.我也要删除它们.csv文件如下: 我编写了以下代码,以至少获取转向值为0的文件.我所需要的 ...

  3. numpy 删除所有为_用Numpy和Pandas工具分析销售数据

    在数据分析领域,Python中用到最多的包是numpy,pandas和matplotlib,本文共分为三个部分:1.使用numpy和pandas分析一维数据 2.使用numpy和pandas分析二维数 ...

  4. 用python完成图形输出设备_使用numpy进行9宫格图像拼接 - Python

    本节内容要用到opencv-python模块,请先行安装.本例程中使用到的图片保存在pictures子目录下.本例的任务是要将9张JPG格式图片按三行三列拼接成下述九宫格. 微实践:九宫格图像拼接 本 ...

  5. python数组切片教程_手把手numpy教程【二】——数组与切片

    今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算. 上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会是我们自己写循环来计算的上百倍甚至更多.并且Numpy的AP ...

  6. python删除excel内容_用python批量删除sheet

    因为工作关系维护了一个Excel文件,格式是xlsx,每天一个sheet,从17年下半年到目前已经有上百个sheet,导致文件越来越大,发邮件加载也变得很慢.想要删除一部分,保留近一个月的,当然手动删 ...

  7. python三维数组切片_【NumPy学习指南】day4 多维数组的切片和索引

    ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1)举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组: ...

  8. python导入matplotlib模块_从NumPy导入python子模块有什么区别,matplotlib包

    参见英文答案 > Importing packages in Python                                    5个 当我尝试使用matplotlib的pypl ...

  9. 为什么python删除不了_为什么python的imp.reload()不会删除旧的类和函数?

    我只是认识到imp.reload()不会删除旧的类和函数,如果它们从模块的源文件中删除. 一个例子: :~$ python3 Python 3.2.3 (default, May 3 2012, 15 ...

最新文章

  1. 工作发狂:Mybatis 中$和#千万不要乱用!
  2. 第四范式亮相中关村论坛 共话科技创新与技术发展
  3. linux后台运行命令,nohup
  4. android 真机 sqlite3,在android真机上使用sqlite3
  5. React生命周期(新)
  6. Educational Codeforces Round 112 (Rated for Div. 2)(A-D)
  7. WEB安全基础-URL跳转漏洞
  8. 【英语学习】【English L06】U02 Food L5 A vegetarian or meat lover
  9. 虚拟机服务器配置毕业论文,基于Vmware的服务器虚拟化管理-毕业论文.doc
  10. 视频时序与BT1120的关系 FPGA实现BT.1120编码
  11. 如何学习 COMSOL 多物理场仿真软件?必备教程
  12. 微信小程序开发之视频上传
  13. mongoDB占内存超大的问题-100MB数据,内存吃到22GB?
  14. 工作流:如何将Word尾注转换为普通文本格式
  15. js网页右下角弹窗js特效
  16. 电脑tdr太低是什么意思_威猫解惑丨新版Substance Painter出现TDR值太低警告的解决办法...
  17. 在python中使用autoit_Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解...
  18. python---合并两个excel表格内容
  19. 恒峰祥可信讲述拼多多电商店铺推广和商品推广有什么不同
  20. 写作小技能:知识工作者的全套手艺

热门文章

  1. Python之GUI编程
  2. android 9.0 c7Pro,三星C7 Pro和C9 Pro哪个好?三星C9 Pro和C7 Pro区别对比
  3. 以下不是计算机网络性能指标的是,下列()不是计算机网络的主要性能指标。
  4. 小米12和小米12pro的区别
  5. 2015年,我买了台i7 4790k主机
  6. 互联网晚报 | 优酷称TFBOYS演唱会线上票不限量;iPhone 15将采用叠层电池;万达集团成被执行人,执行标的逾3亿元...
  7. Android9全屏手势,国行三星S9系列开始推送安卓9.0 原生全屏手势功能来了
  8. 网络层——ARP协议
  9. MongoDB部署分片集群
  10. 软考-信息技术发展(二)