Python數據分析 - Numpy

2021-03-02 優才網

前言

NUMPY(以下簡稱NP)是Python數據分析必不可少的第三方庫,np的出現一定程度上解決了Python運算性能不佳的問題,同時提供了更加精確的數據類型。

如今,np被Python其它科學計算包作為基礎包,已成為Python 數據分析的基礎,可以說,NP是SciPy、Pandas等數據處理或科學計算庫最基本的函數功能庫。因此,理解np的數據類型對python數據分析十分有幫助。

下面,本文將介紹Np的常用操作和基本數據類型。

NP提供了以下重點功能。

一個強大的N維數組對象ndarray

廣功能函數

整合C/C++/Fortran代碼的工具

提供了線性代數、傅立葉變換、隨機數生成的相關功能

為了更加直觀的了解Np的強大與作用,我們先看作用再看方法:

使用NUMPY操作數據集

在操作數據之前,我們先來理解什麼是維度:

什麼是維度

維度是一組數據的組織形式,不同數據維度可能表示不同的含義。一維數據由對等關係的有序或無序數據構成,採用線性方式組織,可以用數組表示。

通俗來講,

這麼一行數據就可以稱之為一維數據,但如果我們再對其摺疊:

那麼他就成為了二維數據,又可以稱之為矩陣。

什麼是數據集

數據集,顧名思義就是數據的集合,是用以訓練程序的數據集合,一般是二維或者多維數表。

如果我們想自己手工新建一個數據集,可以直接新建一個文本文件,只要有恰當的數據,都可以稱之為數據集:

比如這樣,我們就可以稱上面的文件稱之為數據集。我們還注意到,上面數據是使用逗號作為分隔符分隔數據的,它簡單描述了數據的內容和含義,並使用半角逗號作為分隔符。像這樣,用逗號分隔的數據集就稱之為CSV(Comma-Separated Value,逗號分隔值)數據集,它是一種常見的文件格式,用來存儲批量的數據。它就像一張excel表,用來存儲簡單結構的數據。

怎麼樣,數據集的概念是否特別簡單呢?

生成數據集

數據集是一個簡單的概念,但每次使用手工的方式去寫畢竟不方便,所以,我們可以使用np的內置函數來生成數據集:

frame:文件、字符串、或產生器的名字,可以是.gz,.bz2的壓縮文件

arrray:存入文件的NP的數組

fmt(format):寫入文件的格式,如%d,%.2f,%.18e(默認,科學計數法保留18位)

delemiter:分割字符串,默認是任何空格。

我們可以這樣寫下代碼:

這樣,我們就會在當前的工作目錄下發現一個新的demo.csv,用記事本打開,裡面是一個4 * 5的矩陣,元素0~19。

讀取數據集

既然生成,那就可以讀取,同樣使用np:

同樣的我們只需要寫下代碼:

就可以查看到我們先前寫入的數組a。

CSV文件的局限

可以發現,CSV文件只能有效存儲和讀取一維和二維數組,因為更高的維度無法更直觀的文本下顯現出來,這時,更加靈活的存取方式就呼之欲出了,但講之前先賣個關子,再介紹一個不太常用的方法:

tofile:對於NP中的ndarray數組,我們可以使用NP中的tofile方法。

frame:文件,字符串

數據分割字符串,如果不寫,將使用二進位文件存儲

format:寫入數據的格式

同樣,我們只需要命令:

就可以生成新的CSV數據集。

此時,我們如果打開a.dat文件,我們可以看到數組1,2,3……99。但是與CSV不同,這個文件並沒有包含數字的維度信息,他只是將數組所有元素逐一的列出。而且如果我們不指定sep,將保存為二進位文件,雖然對人不可讀,但將佔用更小的空間。

既然tofile可以保存文本文件,那麼也很容易猜到對應的fromfile可以還原這些信息。

如果我們想要重新恢復數據的維度信息,我們需要重新使用reshape來恢復維度信息:

不得不說,當我看到這個方法時感覺這兩個真是蠢爆了,使用savetxt / loadtxt 至少還能保存個二維信息,而使用了tofile / fromfile 方法居然把數被伸展為一維的,然後自己記住維度信息(╯‵□′)╯︵┻━┻。

因此,為了保存更複雜的數據類型,二維以上的數據信息,save / load 函數成功解決了這個問題:(為了方便,兩個函數就放到一起了)

保存 / 讀取高維度數據

Demo:

附錄

附錄中提供NP的常用方法及注釋,做查詢用。

np數組定義

初始化數組

隨機序列

如果想要多個隨機整數:

多維數組運算

還可以使用reshape函數,對數組結構重定義:

下面介紹一些常用的運算操作:

此外,還可以sqrt、log、sin、sum、max等操作:

我們下定義一個三維數組:

我們可以看到sum方法對lst的所有元素都進行了求和,此外我們還可以通過對sum方法增加參數axis的方式來設置求和的深入維度:

這裡的axis取值為數組維數-1,axis可以理解為進行運算操作時的深入程度,axis越大,深入程度越大。同理,不僅sum函數,max等函數也可以一樣理解。

相加運算

numpy.array是np最簡單的數據結構。np.array相比與Python原生列表其強大之處在於可以實現對數組數據的運算。我們知道,list只能對元素的追加。而numpy是真正意義上的數據運算。

例如

但np最強大的地方不在於簡單的一維運算,Np對矩陣也能進行基本的運算操作:

此外,由於原生list沒有確定的數據類型,所以維護起來成本較高,而使用C編寫的numpy,則可以聲明各種常見的數據類型:

np所支持的數據類型都有bool、int8/16/32/64/128/、uint8/16/32/64/128、float16/32/43、complex64/128、string。

總結

Python作為一門弱類型語言,有其不可避免的缺點。但NP的出現,彌補了這些缺點,使其具備了構造複雜數據類型的能力,為Python數據分析提供了基礎。

相關焦點

  • python數據分析專題 (9):numpy基礎
    NumPy(Numerical Python的簡稱)是高性能科學計算和數據分析的基礎包。NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。
  • python數據分析:numpy入門
    微信公眾號:學點啥玩點啥小白友好型python數據分析:numpy入門numpy:一個在python中做科學計算的基礎庫,重在數值計算,也是大部分python科學計算庫的基礎庫,多用於在大型、多維數組上執行數值計算。
  • python數據分析專題 (7):python數據分析模塊
    也就是這些python的擴展包讓python可以做數據分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等諸多強大的模塊,在結合上ipython交互工具 ,以及python強大的爬蟲數據獲取能力,字符串處理能力,讓python成為完整的數據分析工具。
  • 學員筆記||Python數據分析之:numpy入門(一)
    (點擊上方公眾號,快速關注一起學AI)這是我學<Python數據分析>時整理出來的numpy基礎速讀筆記,內容大致分為
  • Python 數據分析:Numpy 介紹
    如今,np被Python其它科學計算包作為基礎包,已成為Python 數據分析的基礎,可以說,NP是SciPy、Pandas等數據處理或科學計算庫最基本的函數功能庫。因此,理解np的數據類型對python數據分析十分有幫助。下面,本文將介紹Np的常用操作和基本數據類型。NP提供了以下重點功能。
  • 從零開始學Python數據分析【4】-- numpy
    作者:劉順祥個人微信公眾號:每天進步一點點2015前文傳送門:從零開始學Python數據分析
  • python數據分析專題 (10):numpy使用
    NumPy的ndarry類型也可以進行很多操作,例如數組的索引,組合等,這次內容介紹一些關於numpy多維數組的操作。
  • 數據分析-numpy庫快速了解
    NumPy是SciPy、Pandas等數據處理或科學計算庫的基礎2.numpy庫有什麼用numpy用途是很廣的,涉及到數字計算等都可以使用,它的優勢在於底層是C語言開發的數據非常快。 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據 設置專門的數組對象,經過優化,可以提升這類應用的運算速度觀察:科學計算中,一個維度所有數據的類型往往相同 數組對象採用相同的數據類型,有助於節省運算和存儲空間具體可以看下面一個例子:(來源嵩天老師案例)3.numpy庫怎麼使用先安裝numpy
  • 大數據分析Python NumPy庫使用教程
    我將在大數據分析Python NumPy庫使用教程中學到什麼? 大數據分析Python NumPy庫使用教程為數據工程師提供有關NumPy的從零開始的培訓。這意味著您不需要具有NumPy的任何經驗,也不會浪費任何時間學習與數據工程工作無關的東西。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • 數據系列教程之numpy( 三)
    數據分析系列教程之numpy( 一)數據分析系列教程之numpy(二)上周講了數據分析入門的前兩節,numpy
  • Python冬令營-Numpy 使用簡介
    Numpy 簡介: 使用python進入數據科學的世界!
  • Python數據科學Numpy基礎20問
    1、什麼是numpy?一言以蔽之,numpy是python中基於數組對象的科學計算庫。提煉關鍵字,可以得出numpy以下三大特點:2、如何安裝numpy?因為numpy是一個python庫,所以使用python包管理工具pip或者conda都可以安裝。
  • Python數據分析之numpy學習(一)
    在學完《廖雪峰Python2.7教程》感覺受益匪淺,掌握了基本的語法之後開始接觸用Python進行數據分析。這裡向大家推薦兩本書《Python數據分析》和《利用Python進行數據分析》,而這兩本書也是目前我正在學習的材料,雖然這兩本書都是基於Python2.x,但對於Python3.x也能正常運行。
  • Python 數據分析:NumPy 基礎知識
    簡介NumPy(Numerical Python)是一個開源的 Python 科學計算擴展庫,主要用來處理任意維度數組與矩陣,通常對於相同的計算任務,使用 NumPy 要比直接使用 Python 基本數據結構要簡單、高效的多。安裝使用 pip install numpy 命令即可。2.
  • python數據科學系列:numpy入門詳細教程
    python數據科學基礎庫主要是三劍客:numpy,pandas以及matplotlib,每個庫都集成了大量的方法接口,配合使用功能強大。numpy:numerical python縮寫,提供了底層基於C語言實現的數值計算庫,與python內置的list和array數據結構相比,其支持更加規範的數據類型和極其豐富的操作接口,速度也更快numpy的兩個重要對象是
  • Python數據分析之numpy數組全解析
    1 什麼是numpy2 numpy數組創建2.1 基本方法:np.array()2.2 通用方法:np.ones()、np.zeros()、np.eye()2.3 讀取外部數據3 numpy中數組的數據類型4 numpy中數組的形狀5 索引與切片5.1 按索引取值
  • 好程式設計師Python培訓分享numpy簡介
    NumPy數組用於存儲訓練數據和機器學習模型的參數。 圖像處理和計算機圖形學:計算機中的圖像表示為多維數字數組。NumPy成為同樣情況下最自然的選擇。實際上,NumPy提供了一些優秀的庫函數來快速處理圖像。例如,鏡像圖像、按特定角度旋轉圖像等。 數學任務:NumPy對於執行各種數學任務非常有用,如數值積分、微分、內插、外推等。
  • Python乾貨 | Python數據分析之numpy數組全解析
    1 什麼是numpy2 numpy數組創建2.1 基本方法:np.array()2.2 通用方法:np.ones()、np.zeros()、np.eye()2.3 讀取外部數據3 numpy中數組的數據類型4 numpy中數組的形狀5 索引與切片5.1 按索引取值
  • 學習Python必知的Numpy函數
    背景Python的數據科學以分析為主。大量的擴展包是 Python 的一大特色,包括各種適用於數據分析的例程和函數。