当前位置: 首页 > news >正文

25_NumPy数组np.round将ndarray舍入为偶数

25_NumPy数组np.round将ndarray舍入为偶数

使用 np.round() 将 NumPy 数组 ndarray 的元素值舍入为任意位数。请注意,0.5 由于舍入到偶数而不是一般舍入而舍入为 0.0。

本文介绍了一般舍入的实现示例。

  • 如何使用 np.round()
    • 基本用法
    • 指定要舍入的位数:参数decimals
  • np.round() 舍入为偶数
  • np.round() 和 Python 内置函数 round() 的区别
  • np.around() 和 ndarray 的 round() 方法
  • 四舍五入的实现示例
  • np.rint() 四舍五入为整数

如何使用 np.round()

基本用法

np.round() 返回一个 ndarray,该 ndarray 对指定 ndarray 的每个元素进行四舍五入。默认情况下,数字四舍五入到小数点后 0 位。

a = np.array([12.3, 45.6, 78.9])print(np.round(a))
# [12. 46. 79.]print(np.round(a).dtype)
# float64

返回与原始类型相同的 ndarray。如上例所示,如果源是浮点数 float,则即使小数点右侧的位数为 0,也会返回浮点数 float 的 ndarray。

print(np.round(a).astype(int))
# [12 46 79]print(a.astype(int))
# [12 45 78]

也可以指定列表等类似数组的对象,但返回值是ndarray。

l = [12.3, 45.6, 78.9]print(np.round(l))
# [12. 46. 79.]print(type(np.round(l)))
# <class 'numpy.ndarray'>

还可以指定标量值。

print(np.round(12.3))
# 12.0

指定要舍入的位数:参数decimals

指定要舍入为第二个参数小数中的整数值的位数。默认为小数=0。 指定正整数指定小数点后的位数,指定负整数指定整数的位数(位数)。 -1 四舍五入到十位,-2 四舍五入到百位。

print(np.round(123.456))
# 123.0print(np.round(123.456, 2))
# 123.46print(np.round(123.456, -2))
# 100.0

对于整数 int,如果为小数参数指定负值,它将四舍五入到所需的数字。如果指定 0 或正值,则不会发生任何变化。如果源是整型 int,则返回值也是整型 int。

print(np.round(123456))
# 123456print(np.round(123456, 2))
# 123456print(np.round(123456, -2))
# 123500a = np.array([12345, 67890])print(np.round(a, -3))
# [12000 68000]print(np.round(a, -3).dtype)
# int64

np.round() 舍入为偶数

使用 np.round() 进行舍入不是一般舍入,而是舍入到偶数。
0.5 舍入为 0.0,2.5 舍入为 2.0,等等。

print(np.round([-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5]))
# [-4. -2. -2. -0.  0.  2.  2.  4.]print(np.round([-350, -250, -150, -50, 50, 150, 250, 350], -2))
# [-400 -200 -200    0    0  200  200  400]

当分数恰好为 0.5 时,会舍入为偶数,因此例如,2.5 将舍入为 2.0,但 2.51 将舍入为 3.0。

print(np.round([2.49, 2.5, 2.51]))
# [2. 2. 3.]print(np.round([249, 250, 251], -2))
# [200 200 300]

np.round() 和 Python 内置函数 round() 的区别

还可以使用Python的内置函数round()对值进行舍入。 np.round() 和 round() 都四舍五入为偶数,并且使用方式相同,例如指定要四舍五入的位数作为参数,但结果可能会根据值的不同而有所不同。

print(np.round(0.15, 1))
# 0.2print(round(0.15, 1))
# 0.1

引用中的 np.true_divide() 是一个相当于 / 运算符的函数。 np.rint() 稍后会解释。 如果你通过增加显示位数来检查,浮点数0.15实际上是0.14999…,如果你准确地处理浮点数,四舍五入到0.1是正确的。

print(f'{0.15:.20}')
# 0.14999999999999999445

官方文档中还列出了其他示例。

print(np.round(56294995342131.5, 3))
# 56294995342131.51print(round(56294995342131.5, 3))
# 56294995342131.5

np.around() 和 ndarray 的 round() 方法

np.around() 被定义为 np.round() 的别名。用法是一样的。

a = np.array([12.3, 45.6, 78.9])print(np.around(a))
# [12. 46. 79.]print(np.around(a, -1))
# [10. 50. 80.]

另外,round() 被定义为 ndarray 的方法。

print(a.round())
# [12. 46. 79.]print(a.round(-1))
# [10. 50. 80.]

四舍五入的实现示例

下面显示了实现一般舍入的函数的示例。 参数小数可以像 np.round() 一样指定。对齐位数后,加上 0.5,使用 np.floor() 将小数点四舍五入(四舍五入到负无穷大),并返回位数。

def my_round(x, decimals=0):return np.floor(x * 10**decimals + 0.5) / 10**decimalsa = np.array([-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5])print(np.round(a))
# [-4. -2. -2. -0.  0.  2.  2.  4.]print(my_round(a))
# [-3. -2. -1.  0.  1.  2.  3.  4.]print(a / 10)
# [-0.35 -0.25 -0.15 -0.05  0.05  0.15  0.25  0.35]print(np.round(a / 10, 1))
# [-0.4 -0.2 -0.2 -0.   0.   0.2  0.2  0.4]print(my_round(a / 10, 1))
# [-0.3 -0.2 -0.1  0.   0.1  0.2  0.3  0.4]

在上面的函数中,-0.5 变为 0.0。如果要将 -0.5 更改为 -1.0,请执行以下操作。使用 np.abs() 计算绝对值并使用 np.sign() 返回原始符号。

def my_round2(x, decimals=0):return np.sign(x) * np.floor(np.abs(x) * 10**decimals + 0.5) / 10**decimalsprint(a)
# [-3.5 -2.5 -1.5 -0.5  0.5  1.5  2.5  3.5]print(my_round(a))
# [-3. -2. -1.  0.  1.  2.  3.  4.]print(my_round2(a))
# [-4. -3. -2. -1.  1.  2.  3.  4.]print(a / 10)
# [-0.35 -0.25 -0.15 -0.05  0.05  0.15  0.25  0.35]print(my_round(a / 10, 1))
# [-0.3 -0.2 -0.1  0.   0.1  0.2  0.3  0.4]print(my_round2(a / 10, 1))
# [-0.4 -0.3 -0.2 -0.1  0.1  0.2  0.3  0.4]

np.rint() 四舍五入为整数

还提供 np.rint() 来舍入为整数。处理相当于 np.round(),decimals = 0。

可以指定类似数组的对象(例如 ndarrays 和列表)以及标量值。

a = np.array([12.3, 45.6, 78.9])print(np.rint(a))
# [12. 46. 79.]l = [12.3, 45.6, 78.9]print(np.rint(l))
# [12. 46. 79.]print(np.rint(12.3))
# 12.0

虽然叫rint,但并没有转换为整数int,而是返回一个与原始类型相同类型的ndarray。

print(np.rint(a).dtype)
# float64

与 np.round() 一样,四舍五入到偶数而不是一般四舍五入。

print(np.rint([-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5]))
# [-4. -2. -2. -0.  0.  2.  2.  4.]

相关文章:

25_NumPy数组np.round将ndarray舍入为偶数

25_NumPy数组np.round将ndarray舍入为偶数 使用 np.round() 将 NumPy 数组 ndarray 的元素值舍入为任意位数。请注意&#xff0c;0.5 由于舍入到偶数而不是一般舍入而舍入为 0.0。 本文介绍了一般舍入的实现示例。 如何使用 np.round() 基本用法指定要舍入的位数&#xff1a…...

Java字符串去除空格的方法

前言 在Java编程实践中&#xff0c;处理字符串中的空格是一项基本且频繁的操作。本文将深入探讨如何使用Java原生方法以及Apache Commons Lang库中的StringUtils类&#xff0c;全方位解决字符串去空格的需求&#xff0c;让你的代码更加健壮和高效。 1. Java原生方法 a. trim…...

【Python】【应用】Python应用之如何操作WiFi之一——使用pywifi

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;Python应用&…...

2024OD机试卷-分割均衡字符串 (java\python\c++)

题目:分割均衡字符串 题目描述 均衡串定义: 字符串 中只包含两种字符,且这两种字符的个数相同。 给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。 约定:字符串中只包含大写的 X 和 Y 两种字符。 输入描述 字符串的长度:[2, 10000]。 给定的字符串均为均…...

完整版解答!2024年数维杯数学建模挑战赛B题

B题 生物质和煤共热解问题的研究 技术文档第一问1.1问题一分析1.2数据预处理1.3问题一Spearman相关性分析 数据代码资料获取 技术文档 第一问 1.1问题一分析 对于问题一&#xff0c;题目要求分析出正己烷不溶物对焦油产率、水产率、焦渣产率这三个指标是否有显著影响&#x…...

Android开发,日志级别

5个日志级别 Verbose (VERBOSE): 这是最低的日志级别&#xff0c;用于输出最为详尽的信息&#xff0c;包括开发和调试过程中的各种细节。在Log类中对应的方法是Log.v()。Debug (DEBUG): 此级别用于输出调试信息&#xff0c;帮助开发者理解程序运行流程或状态。通过Log.d()方法…...

Docker 部署 MySQL 数据库

文章目录 MySQL 镜像创建缩主机目录my.cnf 配置文件docker-compose.yml给 Test 账号添加权限 Docker 与 docker-compose 安装这里不做介绍。 MySQL 镜像 根据需要选择版本 # 5.7 版本 docker pull mysql:5.7 # 8.2 版本 docker pull mysql:8.2创建缩主机目录 cd home # 创建…...

代码技巧: 类中同一个函数可以同时存在常函数版本和普通函数版本(c++)

在类中如果我们希望在常函数中修改某属性的值可以使用mutable来实现。 如果有下面的场景&#xff0c;假设我们有一个函数hobby()需要在非const的对象调用的时候&#xff0c;应该去修改内部的属性&#xff0c;在const修饰的对象调用的时候可以满足不修改内部的属性。 鉴于上面的…...

2024OD机试卷-转盘寿司 (java\python\c++)

题目:转盘寿司 题目描述 寿司店周年庆,正在举办 优惠活动 回馈新老客户。 寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格, 如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足…...

MongoDB创建或删除用户并验证数据库权限

本文假设在Ubuntu中安装了MongoDB&#xff0c;并用命令行工具mongosh演示。 一、创建用户并设置数据库权限 用户和数据库是关联的&#xff0c;要在登录时验证某个数据库&#xff0c;需要在相应的数据库内创建用户&#xff0c;即先切换到该数据库再创建用户。除非是root最高权…...

半小时搞懂STM32面经知识——RCC

1. 时钟的概念 时钟是由电路产生的具有周期性的脉冲信号&#xff0c;相当于单片机的心脏&#xff0c;要想使用单片机的外设必须开启时钟。 时钟对单片机有什么作用&#xff1f; 1. 驱动外设的本质是寄存器&#xff0c;而寄存器需要时钟触发才能改写值。 2. 时钟频率越高&#…...

汇聚荣科技:拼多多开店没有流量应该怎么办?

拼多多开店没有流量是一个常见的问题&#xff0c;许多新手商家都会遇到这样的困境。那么&#xff0c;如何解决这个问题呢?下面从四个方面进行详细阐述。 一、优化店铺和商品 首先&#xff0c;要确保店铺和商品的质量。店铺要有自己独特的风格和特色&#xff0c;商品要有高质量…...

uni-app(三):离线打包与插件引用(Android)

离线打包与插件引用 1.下载Android离线SDK2.使用Android Studio打开离线打包项目并更新Gradle3.解决报错4.构建5.配置AppKeya.查看证书b.申请AppKeyc.配置AppKey 6.生成本地打包App资源7.拷贝App资源到Android项目中8.修改 appid9.修改Android项目配置文件10.下载证书并配置11.…...

数据分析——对比思维、A/B test

对比分析 数据大小 &#xff1a;与中值、平均值、目标值、标准做对比数据波动&#xff1a;变异系数、方差、标准差数据趋势&#xff1a;时间维度和空间维度 其中 时间维度 横向比较&#xff08;连续7天每天的销售量&#xff09; 纵向比较&#xff08;同一时期不同品类对比&…...

深度探索Java工厂模式:创新与灵活性的结合

在软件设计中&#xff0c;有效地组织对象的创建过程是至关重要的。Java工厂模式是一种优秀的设计模式&#xff0c;它能够在对象创建的过程中提供更大的灵活性和可扩展性。本文将深入探讨工厂模式的不同实现方式&#xff0c;并提供详细的代码示例&#xff0c;以帮助读者更好地理…...

delphi6直连redis服务(用lua脚本redis模块)

一、创建一个exe程序 创建一个exe程序&#xff0c;引用LuaRedis.pas单元&#xff08;此单元自己封装的代码&#xff0c;目前主要封装了获取key和设置key/value功能&#xff09;&#xff0c;代码如下&#xff1a; unit Unit1;interfaceusesWindows, Messages, SysUtils, Variant…...

嵌入式Linux:编译和使用Protobuf库

目录 1、开发环境和工具 2、安装和编译Protobuf、Protobuf-C库 3、编写和编译proto文件 4、修改makefile文件 5、测试示例 6、参考资料 Protobuf&#xff08;Protocol Buffers&#xff09;是由 Google 开发的一种轻量级、高效的结构化数据序列化方式&#xff0c;用于在不同应用…...

导航app为什么知道还有几秒变绿灯?

在使用地图导航app行驶至信号灯的交叉路口时&#xff0c;这些应用程序会贴心地告知用户距信号灯变化还有多少秒&#xff0c;无论是即将转为绿灯还是红灯。这一智能化提示不仅使得驾驶员能适时做好起步或刹车的准备&#xff0c;有效缓解了因等待时间不确定而产生的焦虑情绪&…...

设计模式 六大原则之单一职责原则

文章目录 概述代码例子小结 概述 先看下定义吧&#xff0c;如下&#xff1a; 单一职责原则的定义描述非常简单&#xff0c;也不难理解。一个类只负责完成一个职责或者功能。也就是说在类的设计中&#xff0c; 我们不要设计大而全的类,而是要设计粒度小、功能单一的类。 代码例…...

DOM重点核心(注册事件+DOM事件流)

目录 1.注册事件 注册时间概述 addEventListener() 删除事件 2.DOM事件流 DOM事件流理论 事件对象 事件对象的常见属性和方法 e.targe 和 this的区别 阻止默认行为 阻止冒泡 事件委托 禁止右键菜单和禁止选中文字 获得鼠标的坐标&#xff08;可视区、页面、浏览器…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...