數據分析基礎教程Numpy指南筆記

来源:http://www.cnblogs.com/yinghuali/archive/2017/07/24/7226821.html
-Advertisement-
Play Games

Numpy指南筆記 第2章:Numpy基礎 創建多維數組# coding:utf-8import numpy as npm=np.array([np.arange(2),np.arange(2)])print mprint m.shape 一維數組切片和索引# coding:utf-8import ...


Numpy指南筆記

第2章:Numpy基礎

創建多維數組
# coding:utf-8
import numpy as np
m=np.array([np.arange(2),np.arange(2)])
print m
print m.shape

 

一維數組切片和索引
# coding:utf-8
import numpy as np
a=np.arange(9)
print a
print a[3:7]
print a[:7:2] #用下標0-7,以2為步長選取元素

 

多維數組切片和索引
# coding:utf-8
import numpy as np
b=np.arange(24).reshape(2,3,4)
print b
print '-------------'
print 'b[0,0,0]',b[0,0,0]
print '-------------'
print 'b[:,0,0]',b[:,0,0]
print '-------------'
print 'b[0]',b[0]
print '-------------'
print 'b[0,1]',b[0,1]
print '-------------'
print 'b[0,1,::2]',b[0,1,::2] #上面數組間隔選取元素
print '-------------'
print 'b[:,1]',b[:,1]
print '-------------'
print 'b[0,:,1]',b[0,:,1]
print '-------------'
print 'b[0,:,-1]',b[0,:,-1] #第一層樓最後一列
print '-------------'
print 'b[0,::-1,-1]',b[0,::-1,-1] #反向選取第一層樓的最後一列的所有房間
print '-------------'
print 'b[0,::2,-1]',b[0,::2,-1] #數組切片中間隔的選定元素
print '-------------'
print 'b[::-1]',b[::-1] #第一層和第二層交換位置

 

改變數組的維度
ravel函數可以完成展平操作 shape 改變維度
# coding:utf-8
import numpy as np
b=np.arange(24).reshape(2,3,4)
print b
a= b.ravel()
print a
a.shape=(6,4) #設置數組維度
print a

 

數組的組合 np.hstack水平組合 np.vstack 垂直組合
# coding:utf-8
import numpy as np
a=np.arange(9).reshape(3,3)
print a
b=2*a
print b
print '--------------------'
print np.hstack((a,b)) #數組水平組合
print '--------------------'
print np.vstack((a,b)) #垂直組合

 

 

第3章:常用函數
import numpy as np
i2=np.eye(2) #2*2數組
np.savetxt(‘eye.txt’,i2) #存儲文件

AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800 #很多數據其中一行
...

 


c,v=np.loadtxt(‘data.csv’,delimiter=’,’,usecols=(6,7),unpack=True) #設置分隔符號為,usecols的參數為一個元組,以獲取第7欄位和第8欄位的數據。upack參數設置為True,意思是拆分存儲不同列的數據
vwap=np.average(c,weights=v) #以v列的數據作為權重計算c的平均權重值
np.mean(c) #計算c的平均值

時間加權平均價格
t=np.arange(len(c)) #求出行數
np.average(c,weights=t)

h,l=np.loadtxt(‘data.csv’,delimiter=’,’,usecols=(4,5),unpack=True) #將每日最高價和最低價的數據載入數組
np.max(h) #獲取該行最大值
np.min(l) #獲取該行最小值
ptp計算數組的取值範圍=max(array)-min(array)
np.ptp(h) np.ptp(l)
np.median(c) 找到中位數
np.msort(c) 將數組從小到大排序
np.var(c) 計算數組的方差
np.diff(c) 返回由相鄰數組元素的插值構成的數組
np.std() 返回數組的標準差
np.where(數組>0) where函數可以根據指定的條件返回所有滿足條件的數組元素的索引值
strptime() 函數根據指定的格式把一個時間字元串解析為時間元組。
converters:數據列和轉換函數之間進行映射的字典
np.take(數組,索引) 獲取數組索引值的元素值

 

x = np.array([[1, 2], [3, 4]])
>>> x.ravel()
array([1, 2, 3, 4])
p52沒有完
第3章:便捷函數

np.corrcoef(bhp_returns,vale_returns) 計算兩個矩陣的相關係數
[[1. 0.67841747
0.67841747 1.]] 右對角線是相關係數

poly=np.polyfi(長度,差值, )擬合一系列數據點 實際就是一個函數
np.polyval(poly,長度+1) 推斷下一個值
vals=np.ployval(poly,t)
np.argmax(vals) 函數最大值
np.argmin(vals) 函數最小值
np.sign(change) change是數據列表 返回對應數據正負號對應列表
hanning函數是一個加權餘弦的窗函數

 

 

第5章:矩陣和通用函數
a=np.mat('1 2 3;4 5 6;7 8 9') #創建矩陣 有空格
a.T 矩陣轉置
a.I 矩陣求逆
A = np.mat(np.arange(9).reshape(3,3))

 

A = np.eye(2)

 

B=2*A

 

np.bmat('A B;A B')

 

a=np.arange(9)
print np.add.reduce(a) 求和結果36

a=np.array([2,6,5])
b=np.array([1,2,3])
print np.true_divide(a,b)


數組相除

a=np.arange(-4,4)
print a%2

 

[1,1,2,3,5,8,13,21]
a=np.matrix([[1,1],[1,0]]) 創建斐波那契數列矩陣
print (a**4)[0,0] 為5 該數列第5個數


第6章:深入學習NumPy模塊
numpy.linalg模塊包含線性代數的函數,使用這個模塊可以計算逆矩陣,求特征值,解線性方程組以及求解行列式。
求逆矩陣
import numpy as np
A=np.mat('0 1 2;1 0 3;4 -3 8')
print A
inverse=np.linalg.inv(A)
print inverse

 

求解線性方程組的解
# coding:utf-8
import numpy as np
A=np.mat('1 -2 1;0 2 -8;-4 5 9')
print A
b=np.array([0,8,-9]) #數組y
print b
x=np.linalg.solve(A,b)
print x

 

numpy.linalg模塊中,eigvals函數可以計算矩陣的特征值
# coding:utf-8
import numpy as np
A=np.mat('3 -2;1 0')
print A
B=np.linalg.eigvals(A)
print B

 

eig函數求解特征值和特征向量
# coding:utf-8
import numpy as np
A=np.mat('3 -2;1 0')
print A
B=np.linalg.eig(A)
print B

 

奇異值分解
# coding:utf-8
import numpy as np
A=np.mat('4 11 14;8 7 -2')
print A
U,Sigma,V=np.linalg.svd(A,full_matrices=False)
print'U'
print U
print 'Sigma'
print Sigma
print 'V'
print V

 


並非得到中間的奇異值矩陣,得到的是對角線上的值

矩陣行列式
# coding:utf-8
import numpy as np
A=np.mat('3 4;5 6')
print A
B=np.linalg.det(A)
print B

 


第七章:專用函數
sort函數返回排序後的數組
lexsort 函數根據鍵值的字典序進行排序
argsort 函數返回輸入數組排序後的下標
ndarray類的sort方法可對數組進行原地排序
msort函數沿著第一個軸排序
sort_complex函數對複數按照先實部後虛部的順序進行排序

argmax函數返回數組中最大值對應下標 argmin類似
# coding:utf-8
import numpy as np
a = np.array([2,4,8])
print np.argmax(a)

 

searchsorted函數為指定的插入值返回一個在有序數組中的索引位置
# coding:utf-8
import numpy as np
a = np.arange(5)
print a
indices=np.searchsorted(a,[-2,7])
print indices

 

numpy的extract函數可以根據某個條件從數組中抽取元素。
使用nonzero函數抽取數組中的非零元素
# coding:utf-8
import numpy as np
a = np.arange(7)
print a
condition=(a%2)==0
print 'even numbers',np.extract(condition,a)
print 'Non zero',np.nonzero(a)

 


第9章:使用Matplotlib繪圖
matplotlib.pyplot包中包含了簡單繪圖功能
使用show函數顯示

繪製多項式函數
# coding:utf-8
import numpy as np
import matplotlib.pyplot as plt
func=np.poly1d(np.array([1,2,3,4]).astype(float)) #創建多項式
print func
x=np.linspace(-10,10,30) #在-10和10之間產生30個均勻分佈的值
y=func(x) #創建多項式的值
plt.plot(x,y) #調用plot函數
plt.xlabel('x') #使用xlabel函數添加x軸標簽
plt.ylabel('y(x)')
plt.show()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 首先進入單用戶模式: 1). ubuntu : 上述情況可以在grub界面選擇第二項修複,但沒有grub可以參考: 1、重啟ubuntu,隨即長按shirft進入grub菜單; 2、選擇recovery mode,按"e"鍵進入編輯頁面;如下: 非恢復模式為: 3、將ro recovery n ...
  • 1.先創建一個文件夾用以存放鏡像 2.運行vmware,點擊創建新的虛擬機 3.選擇典型安裝 4. 選擇稍後安裝操作系統 5.選擇客戶機操作系統為Linux,版本為CentOS 64位 6. 選擇一開始創建的用以存放鏡像的文件,並給虛擬機命名 7.選擇磁碟大小,選擇預設20G即可 8.點擊完成 9. ...
  • 做為程式員的我們,經常會要用到文件的上傳和下載功能。到了需要用的時候,各種查資料。有木有..有木有...。為了方便下次使用,這裡來做個總結和備忘。 利用表單實現文件上傳 最原始、最簡單、最粗暴的文件上傳。 前端代碼: 【註意】 1、需要post提交 2、enctype="multipart/form ...
  • 背水一戰 Windows 10 之 控制項(媒體類): 通過處理 Pointer 相關事件實現一個簡單的塗鴉板, InkCanvas 基礎知識 ...
  • 一個基於Entity Framework的自定義分頁,增刪改的通用實現,同時包含Entity的生成,Specification模式,Unit of Work實現。 ...
  • 引子在此前的一篇文章中,我介紹瞭如何在本地docker環境中運行ASP.NET Core跨平臺應用程式(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起來非常不錯,不是嗎?那麼,如果我們希望真正在實際的生產環境去部署和運行這個應用程式,應該怎... ...
  • 在上一篇的EF之DB First中,存在以下的兩個問題: 1. 添加/編輯頁面顯示的是屬性名稱,而非自定義的名稱(如:姓名、專業...) 2. 添加/編輯時沒有加入驗證 3. 數據展示使用分頁 @Html.LabelFor(model => model.Name, htmlAttributes: n ...
  • yaml文件處理(http://pyyaml.org/wiki/PyYAMLDocumentation) 摘要: 本文講的是yaml在python上的使用教程詳解, YAML是一種容易人類閱讀、適合表示程式語言的數據結構、可用於不同程式間交換數據、支持泛型工具、支持串列處理、豐富的表達能力和可擴展性 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...