咱們須要瞭解一下 numpy 的應用場景
web
NumPy提供了大量的數值編程工具,能夠方便地處理向量、矩陣等運算,極大地便利了人們在科學計算方面的工做。另外一方面,Python是免費,相比於花費高額的費用使用Matlab,NumPy的出現使Python獲得了更多人的青睞
編程
查看 numpy 版本
數組
import numpy
numpy.version.full_version
數組
微信
NumPy中的基本對象是同類型的多維數組(homogeneous multidimensional array),這和C++中的數組是一致的,例如字符型和數值型就不可共存於同一個數組中。先上例子dom
a = numpy.arange(20)
經過函數reshape
,咱們能夠從新構造一下這個數組,例如,咱們能夠構造一個4*5
的二維數組,其中reshape
的參數表示各維度的大小,且按各維順序排列(兩維時就是按行排列,這和R中按列是不一樣的):
ide
a = a.reshape(4,5)
構造更高維的也沒問題:函數
a = a.reshape(2,2,5)
既然a
是array
,咱們還能夠調用array
的函數進一步查看a
的相關屬性:ndim
查看維度;shape
查看各維度的大小;size
查看所有的元素個數,等於各維度大小的乘積;dtype
可查看元素類型;dsize
查看元素佔位(bytes)大小工具
建立數組
spa
數組的建立可經過轉換列表實現,高維數組可經過轉換嵌套列表實現:.net
raw = [0,1,2,3,4]
a = numpy.array(raw)
raw = [[0,1,2,3,4], [5,6,7,8,9]]
b = numpy.array(raw)
一些特殊的數組有特別定製的命令生成,如4*5
的全零矩陣:
d = (4, 5)
numpy.zeros(d)
默認生成的類型是浮點型,能夠經過指定類型改成整型:
d = (4, 5)
numpy.ones(d, dtype=int)
[0, 1)
區間的隨機數數組:
numpy.random.rand(5)
數組操做
簡單的四則運算已經重載過了,所有的+
,-
,*
,/
運算都是基於所有的數組元素的,以加法爲例:
相似C++,+=
、-=
、*=
、/=
操做符在NumPy中一樣支持:
開根號求指數也很容易:
須要知道二維數組的最大最小值怎麼辦?想計算所有元素的和、按行求和、按列求和怎麼辦?for
循環嗎?不,NumPy的ndarray
類已經作好函數了:
數組元素訪問
數組和矩陣元素的訪問可經過下標進行,如下均以二維數組(或矩陣)爲例:
能夠經過下標訪問來修改數組元素的值:
如今問題來了,明明改的是a[0][1]
,怎麼連b[0][1]
也跟着變了?這個陷阱在Python編程中很容易碰上,其緣由在於Python不是真正將a
複製一份給b
,而是將b
指到了a
對應數據的內存地址上。想要真正的複製一份a
給b
,能夠使用copy
若對a
從新賦值,即將a
指到其餘地址上,b
仍在原來的地址上:
利用:
能夠訪問到某一維的所有數據,例如取矩陣中的指定列:
數組操做
仍是拿矩陣(或二維數組)做爲例子,首先來看矩陣轉置:
矩陣求逆:
求特徵值和特徵向量
按列拼接兩個向量成一個矩陣:
在循環處理某些數據獲得結果後,將結果拼接成一個矩陣是十分有用的,能夠經過vstack
和hstack
完成:
缺失值
缺失值在分析中也是信息的一種,NumPy提供nan
做爲缺失值的記錄,經過isnan
斷定。
nan_to_num
可用來將nan
替換成0,在後面會介紹到的更高級的模塊pandas
時,咱們將看到pandas
提供能指定nan
替換值的函數。
NumPy還有不少的函數,想詳細瞭解可參考連接 http://wiki.scipy.org/Numpy_Example_List 和 http://docs.scipy.org/doc/numpy
最後獻上NumPy SciPy Pandas Cheat Sheet
本文分享自微信公衆號 - 人生代碼(lijinwen1996329ken)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。