20170420 NumPy基礎:數組和矢量計算-3
20170420 NumPy基礎:數組和矢量計算
一、數學和統計方法(P103)
本小節主要是學習數組的簡單統計方法(比如數組求和、數組求平均數、數組求最大值最小值等......)
基本數組統計方法:
其中,聚合計算方法:
sum、mean、std、var、min、max、argmin、argmax
非聚合計算方法(產生一個由中間結果組成的數組):
cumsum、cumprod
通過數組函數對整個數組或某個軸向(axis)進行統計計算。
聚合計算是對一組數據執行計算,並返回單個值。
基本數組統計函數的調用方法:
1、對整個數組
(1)用作數組的實例方法調用:
arr.mean() #arr是數組
arr.sum()
(2)當做頂級NumPy函數使用:
np.mean(arr)
np.sum(arr)
2、對某個軸向(axis)(用於計算該軸向上的統計值)
實例:
以數組arr =
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
為實例,進行基本數組統計方法的使用。
In [1]: import numpy as npnnIn [2]: data = [[1,2,3],[4,5,6],[7,8,9]]nnIn [3]: arr = np.array(data)nnIn [4]: arrnOut[4]:narray([[1, 2, 3],n [4, 5, 6],n [7, 8, 9]])nnIn [5]: arr.sum() #數組求和的方式一nOut[5]: 45nnIn [6]: np.sum(arr) #數組求和的方式二nOut[6]: 45nnIn [7]: arr.sum( axis = 1 )nOut[7]: array([ 6, 15, 24]) #數組行求和nnIn [8]: arr.sum( axis = 0 ) #數組列求和nOut[8]: array([12, 15, 18])nnIn [9]: arr.mean() #數組求算術平均值的方法一nOut[9]: 5.0nnIn [10]: np.mean(arr) #數組求算術平均值的方法一nOut[10]: 5.0nnIn [11]: arr.mean( axis = 1 ) #數組的每一行的算術平均值計算nOut[11]: array([ 2., 5., 8.])nnIn [12]: arr.mean( axis = 0 ) #數組的每一列的算術平均值計算nOut[12]: array([ 4., 5., 6.])nnIn [13]: arr.std() #數組求方差nOut[13]: 2.5819888974716112nnIn [14]: np.std(arr) #數組求方差nOut[14]: 2.5819888974716112nnIn [15]: arr.min() #數組求最小值nOut[15]: 1nnIn [16]: arr.max() #數組求最大值nOut[16]: 9nnIn [17]: np.min(arr) #數組求最小值nOut[17]: 1nnIn [18]: np.max(arr) #數組求最大值nOut[18]: 9nnIn [19]: arr.argmin() #數組求最小值的位置索引nOut[19]: 0nnIn [20]: arr.argmax() #數組求最大值的位置索引nOut[20]: 8nnIn [21]: arr.cumsum()nOut[21]: array([ 1, 3, 6, 10, 15, 21, 28, 36, 45], dtype=int32)nnIn [22]: np.cumsum(arr)nOut[22]: array([ 1, 3, 6, 10, 15, 21, 28, 36, 45], dtype=int32)n
二、用於布爾型數組的方法
any和all函數的使用
Any用於檢測數組中是否存在一個或多個True,而all則檢測數組中所有值是否都是True:
註:該方法也能用於非布爾型數組,所有非0元素都會被當做True。
In [23]: bools = np.array([False,False,False,True,False])nnIn [24]: bools.any()nOut[24]: TruennIn [25]: np.any(bools)nOut[25]: TruennIn [26]: bools.all()nOut[26]: FalsennIn [27]: np.all(bools)nOut[27]: Falsen
三、NumPy數組的排序
(1)NumPy數組的排序方法:通過sort()方法就地排序。
(2)多維數組可以在任何一個軸向( axis=0 or axis=1 )上進行排序,只需要將軸編號傳給sort即可。
(3)頂級方法np.sort()返回的是數組的已排序的副本,而就地排序則會修改數組本身。
實例:
In [28]: arr0 = np.random.randn(8)nnIn [29]: arr0nOut[29]:narray([ 0.73149229, 0.72745799, -0.81544848, -0.15283259, -0.77863427,n 1.75996272, 0.53480038, -1.01367164])nnIn [30]: arr0.sort()nnIn [31]: arr0nOut[31]:narray([-1.01367164, -0.81544848, -0.77863427, -0.15283259, 0.53480038,n 0.72745799, 0.73149229, 1.75996272])nnIn [32]: arr1 = np.random.randn(5,4)nnIn [33]: arr1nOut[33]:narray([[ 6.79345052e-02, 2.64075509e+00, 4.53374683e-01,n -1.06184388e+00],n [ 6.25132154e-01, 1.84960018e+00, 1.10465020e+00,n 5.60128474e-01],n [ -2.24329214e-01, -8.71627789e-01, 1.89658833e+00,n -3.02493209e-01],n [ -1.88667730e-01, -8.51612806e-04, 8.67524365e-01,n -1.77680860e+00],n [ 2.15146278e-03, -3.76224392e-01, -4.39156289e-01,n -1.95344900e+00]])nnIn [34]: arr1.sort(axis = 0)nnIn [35]: arr1nOut[35]:narray([[ -2.24329214e-01, -8.71627789e-01, -4.39156289e-01,n -1.95344900e+00],n [ -1.88667730e-01, -3.76224392e-01, 4.53374683e-01,n -1.77680860e+00],n [ 2.15146278e-03, -8.51612806e-04, 8.67524365e-01,n -1.06184388e+00],n [ 6.79345052e-02, 1.84960018e+00, 1.10465020e+00,n -3.02493209e-01],n [ 6.25132154e-01, 2.64075509e+00, 1.89658833e+00,n 5.60128474e-01]])nnIn [36]: arr1.sort(axis = 1 )nnIn [37]: arr1nOut[37]:narray([[ -1.95344900e+00, -8.71627789e-01, -4.39156289e-01,n -2.24329214e-01],n [ -1.77680860e+00, -3.76224392e-01, -1.88667730e-01,n 4.53374683e-01],n [ -1.06184388e+00, -8.51612806e-04, 2.15146278e-03,n 8.67524365e-01],n [ -3.02493209e-01, 6.79345052e-02, 1.10465020e+00,n 1.84960018e+00],n [ 5.60128474e-01, 6.25132154e-01, 1.89658833e+00,n 2.64075509e+00]])n
四、唯一化以及其他的集合邏輯
一維ndarray的基本集合運算。
實例練習:
In [38]: values1 = np.array([0,1,2,3,4,5])nnIn [39]: values2 = np.array([1,3,5])nnIn [40]: values3 = np.array([0,1,2,2,3,4,4,4,5,5])nnIn [42]: np.unique(values3)nOut[42]: array([0, 1, 2, 3, 4, 5])nnIn [43]: np.intersect1d(values1,values2)nOut[43]: array([1, 3, 5])nnIn [44]: np.union1d(values1,values2)nOut[44]: array([0, 1, 2, 3, 4, 5])nnIn [45]: np.in1d(values1,values2)nOut[45]: array([False, True, False, True, False, True], dtype=bool)n
知識點總結:
單個數組運算:數組元素求和sum、算術平均值mean、數組求最大值max、最小值min、標準差std、方差var等計算的函數方法使用。
數組排序:一維數組排序sort()、多維數組某一軸向上的排序sort(axis=0,axis=1)。
兩個數組的運算:一維數組交集intersect1d(x,y)、並集union1d(x,y)、數組唯一化unique(x)。
推薦閱讀:
※大數據·最新美帝UFO目擊事件可視化圖表
※[長篇小說]數據分析俠A的成長故事[2.26更]
※rvest包翻譯——利用R語言進行網頁抓取
※《R語言實戰》第6章 筆記
※移動互聯時代,RFM數據模型還有用嗎?