1. 程式人生 > 實用技巧 >第四周學習報告

第四周學習報告

本週學習

上週在進行簡單的例項編寫時,發現了好多問題,最主要的就是我對numpy、pandas、matpolib等庫不是特別熟悉,基礎不夠,於是本週開始重新學習numpy及pandas庫

”熊貓庫“pandas——資料處理

1、主要的資料型別:ndarra
2、(由於pandas我沒找到合適的資料來源來對它進行操作,明天再更,話說不是我懶,沒有大量資料pandas的效果出不來好吧QAQ;之前想過用水仙花資料集和波士頓房價資料集,但效果不太頂)

numpy——矩陣

1、主要的資料型別:DataFrame
2、矩陣的直接建立(不常用)
import numpy
#通過numpy.array直接建立矩陣
vec = numpy.array([[1,2,3,4],[2,3,4,5],[4,5,6,8]])
print(vec)
print(type(vec))
3、從檔案中讀取資料(常用)
world_alcohol = numpy.genfromtxt("world_alcohol.txt")
4、對矩陣的切片或提取
#對矩陣的切片或整行整列提取;或者將矩陣轉化為bool型別的矩陣
print(vec[:,3])
print(vec[0:2,0:3])
print(vec[0,-1])
print(vec[[1,0],[2,3]])
print(vec == 5)
print(3 in vec)
5、如何簡單高效地建立一個全零或全一矩陣
#製造全零或全1的矩陣,dtype規定每一個元素的型別
zeros = numpy.zeros((4, 8), dtype="int32")
print(zeros)
ones = numpy.ones((2,3))
print(ones)
6、常用的對矩陣的巨集觀方法以及另一種建立矩陣的高效方法
#通過numpy.arange建立矩陣,dtype檢視元素的型別,ndim檢視矩陣維度,min和max方法查詢最小和最大的元素
matrix = numpy.arange(20).reshape(4,5)
print(matrix)
print(matrix.dtype)
print(matrix.ndim)
print(matrix.min())
print(matrix.max())
7、對整個矩陣的每個元素分別進行各種三角函式運算,得到一個新的同尺寸矩陣;有一個快速建立矩陣的方法:linspace
#通過numpy.linspace建立矩陣,在A-B之間均勻取出C個數;numpy.sin對整個矩陣的元素求sin值,cos、tan同理
from numpy import pi
matrix2 = numpy.linspace(2, pi, 20).reshape(4, 5)
print(matrix2)
print(numpy.sin(matrix2).reshape(4, 5))
print(numpy.cos(matrix2).reshape(4, 5))
print(numpy.tan(matrix2).reshape(4, 5))
8、矩陣的相乘和矩陣的點乘
arr1 = numpy.array([[1,5],[7,2]])
arr2 = numpy.arange(1,5).reshape(2,2)
print(arr1)
print(arr2)
print(arr1*arr2) #每個元素對應相乘
print(arr1.dot(arr2))#兩種方法實現矩陣相乘
print(numpy.dot(arr1,arr2))
9、對矩陣的方根運算以及絕對值運算
a = numpy.arange(1,13).reshape(3,4)
print(numpy.exp(a))#求e的指數次方
print(numpy.sqrt(a))#求各元素的平方根
print(numpy.square(a))#求各元素的平方
b = numpy.random.randn(16).reshape(4,4)
print(b.astype(numpy.int32))#利用astype來進行型別轉換
print(numpy.fabs(b))#求絕對值
10、矩陣的對數運算、分別以以e、2、10為底
#對各個元素求自然對數,以e、2、10為底
from numpy import e
c = numpy.linspace(e,e*9,8).reshape(2,4)
print(numpy.log(c))
print(numpy.log2(c))
print(numpy.log10(c))
11、矩陣的四捨五入運算(可指定精確度,即around的第二個引數)以及向上向下取整
#利用around取整,利用floor向下取整,利用ceil向上取整,型別轉換也可用來進行向下取整
d = numpy.array([[0.547,4.26,11.4,8.9732],[1.8,12.56,3.14,0.4768]])
print(numpy.around(d))
print(numpy.around(d,1))
print(numpy.around(d,-1))
print(d.astype(numpy.int32))
print(numpy.floor(d))
print(numpy.ceil(d))
12、求轉置矩陣(話說這個方法名好奇怪,是一個單獨的大寫字母——T)
#利用ravel將矩陣轉化為向量,T求轉置矩陣,使用reshape時可以只指定一個維度,另一個維度填-1,會自動劃分
e = numpy.floor(numpy.random.random((3,4))*20)
print(e)
print(numpy.ravel(e))
print(e.T)
print(e.reshape(2,-1))
13、矩陣的拼接以及矩陣的拆分
#矩陣的拼接
arr1 = numpy.floor(numpy.random.random((2,3))*10)
arr2 = numpy.floor(numpy.random.random((2,3))*10)
print(arr1,'\n',arr2)
print(numpy.hstack((arr1,arr2)))
print(numpy.vstack((arr1,arr2)))
print("------------------------我是分割線------------------------")
#矩陣的拆分,傳單個數字就是平均分成幾份,不能均分會報錯,傳元組就是切割的位置
vector = numpy.arange(0,12).reshape((2,6))
print(vector)
print(numpy.hsplit(vector,(1,)))

話說之前Anaconda自帶的jupyter notebook一直被我忽視了,這周發現它竟然意外地好用,一個cell一個cell地run,效率奇高,從而不會被整個程式碼中的其它的輸出干擾,更加方便對於結果的檢視,只是jupyter notebook沒有自動補齊以及debug的功能