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.]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12143.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12143.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12143.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

30W 寬電壓輸入 AC/DC 導軌式開關電源——TPR/DG-30-XS 系列

TPR/DG-30-XS 系列導軌式開關電源&#xff0c;額定輸出功率為30W&#xff0c;產品輸入范圍&#xff1a;90-264VAC。提供12V、24V輸出&#xff0c;12V輸出時&#xff0c;工作溫度范圍 (-25℃~70℃)具有短路保護&#xff0c;過載保護等功能&#xff0c;并具備高效率&#xff0c;高…

Windows內核--Kernel API簡析(3.1)

如果所有的內核提供的功能&#xff0c;內核提供進程/線程創建和終止&#xff0c;內存分配和釋放&#xff0c;文件操作&#xff0c;網絡功能&#xff0c;驅動程序加載和卸載等功能。這些API將在后面陸續介紹&#xff0c;如下先介紹Kernel提供的基礎API(Kernel自身或Driver使用).…

視頻號小店,一個不用直播就可以變現的項目!創業首選!

大家好&#xff0c;我是電商小V 想要創業或者是想要利用視頻號變現的小伙伴可以說是很多的&#xff0c;因為視頻號這兩年的流量是非常大的&#xff0c;甚至即將超越抖音的流量&#xff0c;因為視頻號背靠騰訊平臺&#xff0c;也是不缺少流量的&#xff0c;并且視頻號的流量是可…

實時“秒回”,像真人一樣語音聊天,GPT-4o模型強到恐怖

今天凌晨OpenAl發布了 GPT-4o&#xff0c;這是一種新的人工智能模式&#xff0c;集合了文本、圖片、視頻、語音的全能模型。 能實時響應用戶的需求&#xff0c;并通過語音來實時回答你&#xff0c;你可以隨時打斷它。還具有視覺能力&#xff0c;能識別物體并根據視覺做出快速的…

6、Qt—Log4Qt使用小記1

開發平臺&#xff1a;Win10 64位 開發環境&#xff1a;Qt Creator 13.0.0 構建環境&#xff1a;Qt 5.15.2 MSVC2019 64位 一、Log4Qt簡介 Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C 端口。它旨在供開源和商業Qt項目使用。所以 Log4Qt 是Apa…

Java零拷貝技術實戰

文章目錄 引入傳統IO內存映射mmap文件描述符sendFile測試總結 引入 為什么要使用零拷貝技術&#xff1f; 傳統寫入數據需要4次拷貝&#xff0c;如下圖&#xff1a; 傳統IO import java.io.*; import java.net.Socket;public class TranditionIOClient {private static fina…

【機器學習300問】81、什么是動量梯度下降算法?

動量梯度下降算法&#xff08;Momentum&#xff09;是利用指數加權移動平均的思想來實現梯度下降的算法。讓我們先來回顧一下基礎的梯度下降方法以及看看它有哪些不足之處。接著引出動量梯度下降算法&#xff0c;在理解了它的原理后看看它是如何規避之前方法的不足的。 如果不知…

網絡安全ctf比賽_學習資源整理,解題工具、比賽時間、解題思路、實戰靶場、學習路線,推薦收藏!...

對于想學習或者參加CTF比賽的朋友來說&#xff0c;CTF工具、練習靶場必不可少&#xff0c;今天給大家分享自己收藏的CTF資源&#xff0c;希望能對各位有所幫助。 CTF在線工具 首先給大家推薦我自己常用的3個CTF在線工具網站&#xff0c;內容齊全&#xff0c;收藏備用。 1、C…

使用 RyTuneX 增強您的 Windows 10 和 11 體驗 – Rayen Ghanmi 的首選優化器。

&#x1f4dd; 關于 RyTuneX 是使用 WinUI 3 框架構建的尖端優化器&#xff0c;旨在增強 Windows 設備&#x1f680;的性能。 RyTuneX 專為 Windows 10 和 11 打造&#xff0c;使用戶能夠毫不費力地刪除頑固的預裝應用程序并優化系統資源&#x1f6e0;?。 &#x1f680; 功能…

java實現音頻、視頻離開頁面存儲收聽記錄、觀看記錄

說明:本文是既《SpringBoot+thymeleaf完成視頻記憶播放功能》的續寫,如有興趣可點擊鏈接查看。 一、功能背景描述說明: 1、在手機瀏覽器離開時將看到的視頻記錄、視頻時長和音頻的收聽記錄、收聽時長存入數據庫記錄; 2、用戶通過將觀看、收聽記錄導出,能夠看到是誰看了哪些…

微信加粉計數器

1.采用非注入式開發&#xff0c;支持無限多開 2.每個賬號都有獨立的分組&#xff0c;實時遠程網頁數據分享 3.后臺功能強大&#xff0c;操作簡單&#xff0c;自動去重復&#xff0c;準確計數分秒不差

Java畢業設計 基于SpringBoot vue藥店管理系統

Java畢業設計 基于SpringBoot vue藥店管理系統 SpringBoot 藥店管理系統 功能介紹 員工 登錄 個人中心 修改密碼 個人信息 查看供應商信息 查看藥品 查看進貨 查看銷售 管理員 登錄 個人中心 修改密碼 個人信息 供應商類型管理 供應商信用等級類型管理 藥品類型管理 供應商信…

不懂數字后端Box List、Polygon的意思?

什么是BOX&#xff1f; 景芯SoC做design planning的第一步就是確定floorplan的box&#xff0c;也就是設計的區域。這個區域可以劃分為三個邊界&#xff0c;如下圖所示&#xff1a; Die Box 最外面一圈&#xff0c;我們稱為 Die Box&#xff0c;也就是用來放置 IO 單元&#x…

太陽能無人機的多元化應用

隨著新能源技術的不斷發展和成熟&#xff0c;太陽能在無人機的應用技術已經成熟。太陽能無人機得到了量產和廣泛的應用。傳統無人機相比&#xff0c;太陽能無人機無需燃油&#xff0c;運行費用低廉&#xff0c;搭載多種高科技設備&#xff0c;能夠高效、多元化地采集和分析各類…

flutter 禁止橫屏設置

1.Flutter 設置 在 main 函數 加載app前添加以下代碼 SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,DeviceOrientation.portraitDown,]) 添加后的結果 void main() async {WidgetsBinding widgetsBinding WidgetsFlutterBinding.ensureInitializ…

匯昌聯信電商:拼多多網店好做嗎?

在電子商務的海洋中&#xff0c;拼多多以其獨特的團購模式和親民策略迅速崛起&#xff0c;吸引了大批消費者和商家的目光。對于“拼多多網店好做嗎?”這個問題&#xff0c;答案并非簡單的是與否&#xff0c;而是需要從多個維度進行深入分析。 一、市場定位與競爭環境 拼多多定…

常見 Web 安全攻防總結

Web 安全的對于 Web 從業人員來說是一個非常重要的課題&#xff0c;所以在這里總結一下 Web 相關的安全攻防知識&#xff0c;希望以后不要再踩雷&#xff0c;也希望對看到這篇文章的同學有所幫助。今天這邊文章主要的內容就是分析幾種常見的攻擊的類型以及防御的方法。 也許你對…

05-10 周五 推理是什么

05-10 周五 推理是什么 時間版本修改人描述2024年5月10日10:13:54V0.1宋全恒新建文檔2024年5月13日11:08:42V1.0宋全恒填充了訓練和推理的定義&#xff0c;并且對于推理加速的方面進行了詳細的介紹 簡介 最近要坐推理時的動態量化&#xff0c;因此&#xff0c;需要認真理解一下…

獨立游戲《星塵異變》UE5 C++程序開發日志3——實現一個存存組件

本篇日志中&#xff0c;我將會介紹如何實現一個有格子&#xff0c;每個格子有容量的物品庫存&#xff0c;如下圖&#xff1a; 一.庫存容器 1.儲存數據的容器 庫存容器最重要的目的就是存儲每一種類的物品擁有的數量&#xff0c;這里我用的是哈希表&#xff1a; std::unordere…

huggingface:利用git克隆目標資源

前言 因為有很多模型資源都被放在了huggingface上&#xff0c;為了下載它們&#xff0c;著實讓一個不懂git的人犯了難&#xff0c;繞了很多遠路&#xff0c;甚至將不需要解決的問題也都拿上了臺面&#xff0c;因此我將在本篇博客中記載一些關于【huggingface】中利用git克隆目標…