python删除负数负号_在numpy中将负数舍入为零时,如何消除多余的负号?
在-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中将负数舍入为零时,如何消除多余的负号?相关推荐
- python判断正数和负数教案_最新正数和负数教案
精品文档 精品文档 正数和负数教案 一. 学习目标 1. 在了解相反意义量的基础上,使学生了解正负数的概念和学习正负数的意义. 2. 使学生能正确判断一个数是正数还是负数,明确零既不是正数也不是负数. ...
- python删除指定行_关于csv:删除python中的特定行和对应文件
我想删除90%的"转向"值等于0的行.这三个图像都有一个对应的图像文件,中间,左边和右边.我也要删除它们.csv文件如下: 我编写了以下代码,以至少获取转向值为0的文件.我所需要的 ...
- numpy 删除所有为_用Numpy和Pandas工具分析销售数据
在数据分析领域,Python中用到最多的包是numpy,pandas和matplotlib,本文共分为三个部分:1.使用numpy和pandas分析一维数据 2.使用numpy和pandas分析二维数 ...
- 用python完成图形输出设备_使用numpy进行9宫格图像拼接 - Python
本节内容要用到opencv-python模块,请先行安装.本例程中使用到的图片保存在pictures子目录下.本例的任务是要将9张JPG格式图片按三行三列拼接成下述九宫格. 微实践:九宫格图像拼接 本 ...
- python数组切片教程_手把手numpy教程【二】——数组与切片
今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算. 上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会是我们自己写循环来计算的上百倍甚至更多.并且Numpy的AP ...
- python删除excel内容_用python批量删除sheet
因为工作关系维护了一个Excel文件,格式是xlsx,每天一个sheet,从17年下半年到目前已经有上百个sheet,导致文件越来越大,发邮件加载也变得很慢.想要删除一部分,保留近一个月的,当然手动删 ...
- python三维数组切片_【NumPy学习指南】day4 多维数组的切片和索引
ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1)举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组: ...
- python导入matplotlib模块_从NumPy导入python子模块有什么区别,matplotlib包
参见英文答案 > Importing packages in Python 5个 当我尝试使用matplotlib的pypl ...
- 为什么python删除不了_为什么python的imp.reload()不会删除旧的类和函数?
我只是认识到imp.reload()不会删除旧的类和函数,如果它们从模块的源文件中删除. 一个例子: :~$ python3 Python 3.2.3 (default, May 3 2012, 15 ...
最新文章
- 工作发狂:Mybatis 中$和#千万不要乱用!
- 第四范式亮相中关村论坛 共话科技创新与技术发展
- linux后台运行命令,nohup
- android 真机 sqlite3,在android真机上使用sqlite3
- React生命周期(新)
- Educational Codeforces Round 112 (Rated for Div. 2)(A-D)
- WEB安全基础-URL跳转漏洞
- 【英语学习】【English L06】U02 Food L5 A vegetarian or meat lover
- 虚拟机服务器配置毕业论文,基于Vmware的服务器虚拟化管理-毕业论文.doc
- 视频时序与BT1120的关系 FPGA实现BT.1120编码
- 如何学习 COMSOL 多物理场仿真软件?必备教程
- 微信小程序开发之视频上传
- mongoDB占内存超大的问题-100MB数据,内存吃到22GB?
- 工作流:如何将Word尾注转换为普通文本格式
- js网页右下角弹窗js特效
- 电脑tdr太低是什么意思_威猫解惑丨新版Substance Painter出现TDR值太低警告的解决办法...
- 在python中使用autoit_Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解...
- python---合并两个excel表格内容
- 恒峰祥可信讲述拼多多电商店铺推广和商品推广有什么不同
- 写作小技能:知识工作者的全套手艺
热门文章
- Python之GUI编程
- android 9.0 c7Pro,三星C7 Pro和C9 Pro哪个好?三星C9 Pro和C7 Pro区别对比
- 以下不是计算机网络性能指标的是,下列()不是计算机网络的主要性能指标。
- 小米12和小米12pro的区别
- 2015年,我买了台i7 4790k主机
- 互联网晚报 | 优酷称TFBOYS演唱会线上票不限量;iPhone 15将采用叠层电池;万达集团成被执行人,执行标的逾3亿元...
- Android9全屏手势,国行三星S9系列开始推送安卓9.0 原生全屏手势功能来了
- 网络层——ARP协议
- MongoDB部署分片集群
- 软考-信息技术发展(二)