數據分析之NumPy

一:NumPy的介紹

  NumPy是用於科學計算的一個開源Python擴充程序庫,它爲Python提供了高性能的數組與矩陣運算處理能力,NumPy爲Python帶來了真正的多位數組功能,而且提供了豐富的函數庫處理這些數組。經常使用的數學函數都支持向量化運算,使得這些數學函數可以直接對數組進行操做,將原本須要在Python級別進行的循環放到C語言的運算,明顯的提升了程序的運算速度。html

  簡單來講,NumPy是高性能科學計算和數據分析的基礎包,它是pandas等其餘各類工具的基礎。web

二:NumPy的基本使用

  安裝方法:pip install numpy數組

  引用方式:import numpy as np數據結構

  NumPy的核心功能是「ndarray」(即n-dimensional array,多維數組)數據結構。app

  特色:機器學習

    連續內存分配、向量化操做、布爾選擇、分片(sliceability)ide

   NumPy的主要功能:函數

    ndarray,一個多位數組結構,高效且節省空間工具

    無需循環對數組數據進行運算性能

    讀寫磁盤數據的工具以及用於操做內存映射文件的工具

    線性代數、隨機數生成和傅里葉變換功能

    用於繼承C、C++等代碼的工具

三:ndarray基本屬性

  1:基本屬性

  ndarray.ndmin數組軸的個數

  ndarray.shape數組的維度,這是一個指示數組在每一個維度上大小的整數元祖。例如一個n排m列的矩陣,它的shape屬性將是(2,3)

  ndarray.size數組個數的總個數,等於shape屬性中元祖元素的乘積。

  ndarray.dtype一個用於描述數組中元素類型的對象,能夠創造或指定dtype使用標準Python類型。另外NumPy提供它本身的數據類型。

  ndarray.itemsize數組中每一個元素的字節大小,例如,一個元素類型爲float64的數組,itemsize屬性值爲8(64/8),又如,一個元素類型爲complex32的數組item屬性爲4(32/8)

  T :數組的轉置(對高維度數組而言)

  dtype: 數組元素的數據類型

  size:數組元素的個數

  2:NumPy: ndarray 多維數組對象

  建立ndarray:

    array(): 將列表轉換爲數組,可選擇顯示指定dtype

    arange(): range 的NumPy版,支持浮點數

    linspace(): 相似arange(),第三個參數爲數組長度

    zeros(): 根據指定形狀和dtype建立全0數組

    ones(): 根據指定形狀和dtype建立全1數組

    reshape(): 更改數組的維度

.ndim :維度 
.shape :各維度的尺度 (2,5) 
.size :元素的個數 10 
.dtype :元素的類型 dtype(‘int32’) 
.itemsize :每一個元素的大小,以字節爲單位 ,每一個元素佔4個字節 
ndarray數組的建立 
np.arange(n) ; 元素從0到n-1的ndarray類型 
np.ones(shape): 生成全1 
np.zeros((shape), ddtype = np.int32) : 生成int32型的全0 
np.full(shape, val): 生成全爲val 
np.eye(n) : 生成單位矩陣

np.ones_like(a) : 按數組a的形狀生成全1的數組 
np.zeros_like(a): 同理 
np.full_like (a, val) : 同理

np.linspace(1,10,4): 根據起止數據等間距地生成數組 
np.linspace(1,10,4, endpoint = False):endpoint 表示10是否做爲生成的元素 
經常使用
.reshape(shape) : 不改變當前數組,依shape生成 
.resize(shape) : 改變當前數組,依shape生成 
.swapaxes(ax1, ax2) : 將兩個維度調換 
.flatten() : 對數組進行降維,返回摺疊後的一位數組
數組的維度變換
數據類型的轉換 :a.astype(new_type) : eg, a.astype (np.float) 
數組向列表的轉換: a.tolist() 
數組的類型變換
a = np.array ([9, 8, 7, 6, 5, ]) 
a[1:4:2] –> array([8, 6]) : a[起始編號:終止編號(不含): 步長]
一維數組切片
a = np.arange(24).reshape((2, 3, 4)) 
a[1, 2, 3] 表示 3個維度上的編號, 各個維度的編號用逗號分隔
多維數組索引
a [:,:,::2 ] 缺省時,表示從第0個元素開始,到最後一個元素 
多維數組切片
np.abs(a) np.fabs(a) : 取各元素的絕對值 
np.sqrt(a) : 計算各元素的平方根 
np.square(a): 計算各元素的平方 
np.log(a) np.log10(a) np.log2(a) : 計算各元素的天然對數、10、2爲底的對數 
np.ceil(a) np.floor(a) : 計算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整) 
np.rint(a) : 各元素 四捨五入 
np.modf(a) : 將數組各元素的小數和整數部分以兩個獨立數組形式返回 
np.exp(a) : 計算各元素的指數值 
np.sign(a) : 計算各元素的符號值 1(+),0,-1(-) 
. 
np.maximum(a, b) np.fmax() : 比較(或者計算)元素級的最大值 
np.minimum(a, b) np.fmin() : 取最小值 
np.mod(a, b) : 元素級的模運算 
np.copysign(a, b) : 將b中各元素的符號賦值給數組a的對應元素
數組運算
sum(a, axis = None) : 依給定軸axis計算數組a相關元素之和,axis爲整數或者元組 
mean(a, axis = None) : 同理,計算平均值 
average(a, axis =None, weights=None) : 依給定軸axis計算數組a相關元素的加權平均值 
std(a, axis = None) :同理,計算標準差 
var(a, axis = None): 計算方差 
eg: np.mean(a, axis =1) : 對數組a的第二維度的數據進行求平均 
a = np.arange(15).reshape(3, 5) 
np.average(a, axis =0, weights =[10, 5, 1]) : 對a第一各維度加權求平均,weights中爲權重,注意要和a的第一維匹配

min(a) max(a) : 計算數組a的最小值和最大值 
argmin(a) argmax(a) : 計算數組a的最小、最大值的下標(注:是一維的下標) 
unravel_index(index, shape) : 根據shape將一維下標index轉成多維下標 
ptp(a) : 計算數組a最大值和最小值的差 
median(a) : 計算數組a中元素的中位數(中值)
NumPy統計函數

詳細方法連接:http://www.cnblogs.com/TensorSense/p/6795995.html

四:Anaconda的安裝及使用

  1:anaconda是什麼?

  anaconda是Python的包管理器和環境管理器。

  2:爲何用anaconda?

  anaconda附帶了一大批經常使用數據科學包,附帶了conda、Python和150多個科學包及其依賴項。提供包管理功能,使得Windows平臺安裝第三方包常常失敗的場景得以解決。提供環境管理功能,解決多版本Python並存、切換的問題。

  3:安裝

  官網下載安裝包:官網地址https://www.anaconda.com/download/

  值得注意的是anaconda沒有快捷方式(pip3 install IPython,更加方便運行)

tips:什麼是Jupyter Notebook?

  前身是IPython notebook,是一個開源的web application,能夠建立和分享包含代碼,視圖,註釋的文檔,也能夠用於數據統計,分析,建模,機器學習等領域。

相關文章
相關標籤/搜索