Numpy 统计变量(平均值、标准差、方差、最大、最小、和、乘积、对角线和)
生活随笔
收集整理的這篇文章主要介紹了
Numpy 统计变量(平均值、标准差、方差、最大、最小、和、乘积、对角线和)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. reshape
reshape 后的數組,僅僅是原來數組的視圖 view ,并沒有發生復制元素的行為,這樣才能保證 reshape 操作更為高效。
In [1]: import numpy as npIn [2]: a = np.arange(10)In [3]: a
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [4]: b = a.reshape(2,5)In [5]: b
Out[5]:
array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]])In [6]: a[0] = 10In [7]: a
Out[7]: array([10, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [8]: b
Out[8]:
array([[10, 1, 2, 3, 4],[ 5, 6, 7, 8, 9]])In [9]:
可以看出,在經過 reshape 操作之后,改變 a 中的第一個元素, b 也會跟著改變。
2. 元素級操作
NumPy 中兩個數組加減乘除等,默認都是對應元素的操作:
In [9]: a = np.arange(5)In [10]: a
Out[10]: array([0, 1, 2, 3, 4])In [11]: a+2
Out[11]: array([2, 3, 4, 5, 6])In [12]:
執行 a+2 之后 a 中的每個元素都被加 2。
In [12]: a
Out[12]: array([0, 1, 2, 3, 4])In [13]: a * a
Out[13]: array([ 0, 1, 4, 9, 16])In [14]:
執行 a * a 時,注意是按照元素逐個相乘。
3. 矩陣運算
線性代數中,矩陣的乘法操作在 NumPy 中實現有兩種方法:
- 使用
dot函數; - 轉化為
matrix對象。
使用 dot 函數
In [14]: a
Out[14]: array([0, 1, 2, 3, 4])In [15]: b = np.random.randint(1, 10, (5,2))In [16]: b
Out[16]:
array([[7, 5],[8, 9],[2, 4],[5, 9],[3, 2]])In [17]: np.dot(a, b)
Out[17]: array([39, 52])In [18]:
另一種方法,將 a 和 b 分別轉化為 matrix 對象:
In [18]: np.matrix(a) * np.matrix(b)
Out[18]: matrix([[39, 52]])In [19]:
因為 a 是一個 15 維的數組,而 b 是一個 52 維的數組,所以得出的結果是個 1*2 的數組。
4. 統計變量
4.1 求平均值
In [22]: m = np.arange(5)In [23]: m
Out[23]: array([0, 1, 2, 3, 4])In [24]: m.mean()
Out[24]: 2.0In [25]: m.sum()
Out[25]: 10In [26]:
若想求某一維度的平均值,設置 axis 參數,求 axis 等于 1 的平均值:
In [28]: m =np.random.randint(1, 10,(2,5))In [29]: m
Out[29]:
array([[4, 6, 8, 9, 8],[6, 9, 6, 6, 9]])In [30]: m.mean(axis=1)
Out[30]: array([7. , 7.2])In [31]: (4+6+8+9+8)/5.0
Out[31]: 7.0In [32]: (6+9+6+6+9)/5.0
Out[32]: 7.2In [33]:
4.2 求標準差
如下,分別求所有元素的標準差、某一維度上的標準差:
In [35]: m.std()
Out[35]: 1.6401219466856725In [36]: m.std(axis=1)
Out[36]: array([1.78885438, 1.46969385])In [37]:
4.3 求方差
如下,分別求所有元素的方差、某一維度上的方差:
In [38]: m.var()
Out[38]: 2.69In [39]: m.var(axis=1)
Out[39]: array([3.2 , 2.16])In [40]:
4.4 求最大值
如下,分別求所有元素的最大值、某一維度上的最大值:
In [40]: m.max()
Out[40]: 9In [41]: m.max(axis=1)
Out[41]: array([9, 9])In [42]:
4.5 求最小值
如下,分別求所有元素的最小值、某一維度上的最小值:
In [42]: m.min()
Out[42]: 4In [43]: m.min(axis=1)
Out[43]: array([4, 6])In [44]:
4.6 求和
如下,分別求所有維度上元素的和、某一維度上的元素和:
In [44]: m.sum()
Out[44]: 71In [45]: m.sum(axis=1)
Out[45]: array([35, 36])In [46]:
4.7 求累乘
如下,分別求所有維度上元素的累乘、某一維度上的累乘:
In [46]: m
Out[46]:
array([[4, 6, 8, 9, 8],[6, 9, 6, 6, 9]])In [47]: m.cumprod()
Out[47]:
array([ 4, 24, 192, 1728, 13824, 82944,746496, 4478976, 26873856, 241864704], dtype=int32)In [48]: m.cumprod(axis=1)
Out[48]:
array([[ 4, 24, 192, 1728, 13824],[ 6, 54, 324, 1944, 17496]], dtype=int32)In [49]:
4.8 求累和
如下,分別求所有維度上元素的累加和、某一維度上的累加和:
In [49]: m
Out[49]:
array([[4, 6, 8, 9, 8],[6, 9, 6, 6, 9]])In [50]: m.cumsum()
Out[50]: array([ 4, 10, 18, 27, 35, 41, 50, 56, 62, 71], dtype=int32)In [51]: m.cumsum(axis=1)
Out[51]:
array([[ 4, 10, 18, 27, 35],[ 6, 15, 21, 27, 36]], dtype=int32)In [52]:
4.9 對角線上元素的和
In [54]: m = np.random.randint(1,10,(4,4))In [55]: m
Out[55]:
array([[6, 6, 4, 6],[8, 4, 9, 3],[8, 4, 3, 1],[2, 6, 6, 7]])In [56]: m.trace()
Out[56]: 20In [57]:
總結
以上是生活随笔為你收集整理的Numpy 统计变量(平均值、标准差、方差、最大、最小、和、乘积、对角线和)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刘湿湿金主有多少?
- 下一篇: Numpy 多维数组变为常量、增加维度、