日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

向量化操作簡介和Pandas、Numpy示例

來源: 責編: 時間:2023-10-16 17:10:00 301觀看
導讀Pandas是一種流行的用于數據操作的Python庫,它提供了一種稱為“向量化”的強大技術可以有效地將操作應用于整個列或數據系列,從而消除了顯式循環的需要。在本文中,我們將探討什么是向量化,以及它如何簡化數據分析任務。什

Pandas是一種流行的用于數據操作的Python庫,它提供了一種稱為“向量化”的強大技術可以有效地將操作應用于整個列或數據系列,從而消除了顯式循環的需要。在本文中,我們將探討什么是向量化,以及它如何簡化數據分析任務。zHM28資訊網——每日最新資訊28at.com

zHM28資訊網——每日最新資訊28at.com

什么是向量化?

向量化是將操作應用于整個數組或數據系列的過程,而不是逐個遍歷每個元素。在Pandas中可以對整個列或Series執行操作,而無需編寫顯式循環。這種高效的方法利用了底層優化的庫,使您的代碼更快、更簡潔。zHM28資訊網——每日最新資訊28at.com

向量化操作示例

1、基本算術運算

一個具有兩列的DataFrame, ' a '和' B ',我們希望以元素方式添加這兩列,并將結果存儲在新列' C '中。通過向量化,你可以在一行代碼中實現這一點:zHM28資訊網——每日最新資訊28at.com

import pandas as pd  data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data) # Using vectorization to add columns 'A' and 'B' df['C'] = df['A'] + df['B'] print(df['C'])  Output: 0   5 1   7 2   9

在本例中,加法運算df['A'] + df['B']同時應用于整個列'A'和'B',結果存儲在列'C'中。zHM28資訊網——每日最新資訊28at.com

2、apply

向量化還允許對列應用自定義函數。假設你想計算一列中每個元素的平方:zHM28資訊網——每日最新資訊28at.com

import pandas as pd  data = {'A': [1, 2, 3]} df = pd.DataFrame(data) # Define a custom function def square(x):    return x ** 2  # Applying the 'square' function to the 'A' column df['A_squared'] = df['A'].apply(square) print(df['A_squared'])  Output: 0   1 1   4 2   9

使用.apply()將平方函數應用于整個'A'列。不需要顯式循環。zHM28資訊網——每日最新資訊28at.com

3、條件操作

也將矢量化用于條件操作,比如基于列a中的條件創建一個新的列D:zHM28資訊網——每日最新資訊28at.com

import pandas as pd  data = {'A': [1, 2, 3]} df = pd.DataFrame(data)  # Creating a new column 'D' based on a condition in column 'A' df['D'] = df['A'].apply(lambda x: 'Even' if x % 2 == 0 else 'Odd')  print(df)  Output:    A     D 0 1   Odd 1 2 Even 2 3   Odd

使用lambda函數來檢查' a '中的每個元素是偶數還是奇數,并將結果分配給' D '列。zHM28資訊網——每日最新資訊28at.com

向量化的好處

在Pandas中向量化提供了幾個好處:zHM28資訊網——每日最新資訊28at.com

  • 效率:操作針對性能進行了優化,并且比傳統的基于循環的操作快得多,特別是在大型數據集上。
  • 清晰度:與顯式循環的代碼相比,代碼通常更簡潔,更容易閱讀。
  • 易用性:您可以使用一行代碼將操作應用于整個行或列,降低了腳本的復雜性。
  • 兼容性:Pandas與其他數據科學庫(如NumPy和scikit-learn)無縫集成,可以在數據分析和機器學習項目中有效地使用向量化數據。

向量化提高代碼的速度

向量化是一種強大的編程技術,可以加快代碼的執行速度。這種方法利用底層優化的硬件指令和庫,使計算更快、更高效。讓我們以Python和NumPy為例,探索向量化如何加快代碼的速度。zHM28資訊網——每日最新資訊28at.com

傳統的基于循環的處理

在許多編程場景中,可能需要對數據元素集合執行相同的操作,例如逐個添加兩個數組或對數組的每個元素應用數學函數。一般都會使用循環一次迭代一個元素并執行操作。zHM28資訊網——每日最新資訊28at.com

下面是一個沒有向量化的Python示例:zHM28資訊網——每日最新資訊28at.com

list1 = [1, 2, 3, 4, 5] list2 = [6, 7, 8, 9, 10] result = []  for i in range(len(list1)):    result.append(list1[i] + list2[i]) print(result)  Output: [7, 9, 11, 13, 15]

雖然此代碼可以工作,但它在循環中單獨處理每個元素,這對于大型數據集來說可能很慢。zHM28資訊網——每日最新資訊28at.com

使用NumPy進行向量化操作

NumPy是一個流行的Python庫,提供對向量化操作的支持。它利用了優化的C和Fortran庫,使其在數值計算方面比純Python循環快得多。zHM28資訊網——每日最新資訊28at.com

下面是使用NumPy的相同加法操作:zHM28資訊網——每日最新資訊28at.com

array1 = np.array([1, 2, 3, 4, 5]) array2 = np.array([6, 7, 8, 9, 10]) result = array1 + array2 print(result)  Output: [ 7 9 11 13 15]

NumPy可以一次對整個數組執行操作,并且更有效地處理底層細節。zHM28資訊網——每日最新資訊28at.com

效率比較

比較一下使用NumPy和Python中傳統的基于循環的方法執行元素加法所花費的時間。我們將使用timeit模塊來度量這兩個方法的執行時間。下面是比較的代碼:zHM28資訊網——每日最新資訊28at.com

import numpy as np import timeit  # Create two NumPy arrays and two lists for the comparison array1 = np.random.randint(1, 100, size=1000000) array2 = np.random.randint(1, 100, size=1000000) list1 = list(array1) list2 = list(array2)  # Vectorized processing with NumPy def numpy_vectorized():    result = array1 + array2  # Traditional loop-based processing def loop_based():    result = []    for i in range(len(list1)):        result.append(list1[i] + list2[i])  # Measure execution time for NumPy vectorized approach numpy_time = timeit.timeit(numpy_vectorized, number=100)  # Measure execution time for traditional loop-based approach loop_time = timeit.timeit(loop_based, number=100)  print(f"NumPy Vectorized Approach: {numpy_time:.5f} seconds") print(f"Traditional Loop-Based Approach: {loop_time:.5f} seconds")   Output: NumPy Vectorized Approach: 0.30273 seconds Traditional Loop-Based Approach: 17.91837 seconds

可以看到NumPy向量化方法對于大數據集的速度要快得多,因為它的矢量化操作是經過優化的。zHM28資訊網——每日最新資訊28at.com

向量化加速代碼的原理

向量化為加快代碼速度提供了幾個優勢:zHM28資訊網——每日最新資訊28at.com

減少循環開銷:在傳統循環中,存在與管理循環索引和檢查循環條件相關的開銷。通過向量化,可以消除這些開銷,因為這些操作應用于整個數組。zHM28資訊網——每日最新資訊28at.com

優化的低級指令:像NumPy這樣的庫使用優化的低級指令(例如,現代cpu上的SIMD指令)來對數組執行操作,充分利用硬件功能。這可以顯著提高速度。zHM28資訊網——每日最新資訊28at.com

并行性:一些向量化操作可以并行化,這意味著現代處理器可以同時執行多個操作。這種并行性進一步加快了計算速度。zHM28資訊網——每日最新資訊28at.com

總結

Pandas和NumPy等庫中的向量化是一種強大的技術,可以提高Python中數據操作任務的效率。可以以高度優化的方式對整個列或數據集合執行操作,從而生成更快、更簡潔的代碼。所以無論是在處理基本算術、自定義函數還是條件操作,利用向量化都可以極大地改進數據分析工作流。zHM28資訊網——每日最新資訊28at.com


zHM28資訊網——每日最新資訊28at.com


zHM28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-13616-0.html向量化操作簡介和Pandas、Numpy示例

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用JIB插件輕松實現Spring Boot應用容器化

下一篇: 從CRUD到CQRS:使用Spring微服務轉變你的架構策略

標簽:
  • 熱門焦點
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 印度登月最關鍵一步!月船三號今晚進入環月軌道

    8月5日消息,據印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環月軌道。這是該探測器能夠成功的最關鍵步驟之一,如果成功將開始圍
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態LT(ID:LingTai_LT)2023年,出海市場戰況空前,中國創業者在海外紛紛摩拳擦掌,以期能夠把中國的商業模式、創業理念、戰略打法輸出海外,他們依
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 蘋果140W USB-C充電器:采用氮化鎵技術

    據10 月 30 日 9to5 Mac 消息報道,當蘋果推出新的 MacBook Pro 2021 時,該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機型的盒子里,也支
Top 主站蜘蛛池模板: 江安县| 东港市| 中山市| 应用必备| 亚东县| 漠河县| 湖北省| 彭泽县| 手游| 招远市| 连州市| 天水市| 广饶县| 沙雅县| 海林市| 大石桥市| 美姑县| 绥阳县| 读书| 法库县| 界首市| 龙游县| 南汇区| 太仓市| 库车县| 宁南县| 缙云县| 侯马市| 成安县| 普安县| 连江县| 阿合奇县| 游戏| 始兴县| 铁力市| 河源市| 曲水县| 突泉县| 潮州市| 隆林| 饶河县|