python数据建模python_Python 数据建模总结和实战(共两万字)
前言:對于初學者來說,Python 是一個不錯的語言,Python 語言簡單易懂,而且有著豐富的數據庫以及活躍的社區,對于大數據分析有很明顯的幫助。學 Python 數據分析的,好好看我長篇文章。
Numpy
NumPy 軟件包是 Python 生態系統中數據分析、機器學習和科學計算的主力軍。它極大地簡化了向量和矩陣的操作處理。Python 的一些主要軟件包(如 scikit-learn、scipy、pandas 和 tensorflow)都以 NumPy 作為其架構的基礎部分。除了能對數值數據進行切片(slice)和切塊(dice)之外,使用 NumPy 還能為處理和調試上述庫中的高級實例帶來極大便利。
本節將介紹使用 NumPy 的一些主要常見方法,示例講解如下。
創建、修改 array、shape 與 reshape 函數
>>> # 導入 numpy
>>> import numpy as np
>>> a = np.array([1, 2, 3])
>>> b = np.array([[1, 2, 3], [4, 5, 6]])
>>> a.dtype
int32
>>> b.shape
(2 3)
>>> 將 b 的第一行第一列的 5 改為 10
>>> b[1,1]=10
>>> b
array([[ 1, 2, 3],
[ 4, 10, 6]])
>>> b.reshape(3,2)
array([[ 1, 2],
[ 3, 4],
[10, 6]])
函數 shape 屬性獲得數組的大小,通過 dtype 獲得元素的屬性。如果你想對數組里的數值進行修改的話,直接賦值即可,注意下標是從 0 開始計的。
數組切片和選取
Numpy 的切片和 Python 列表完全一樣。一個完整的切片表達式包含兩個“:”,用于分隔三個參數(start_index、end_index、step),當只有一個“:”時,默認第三個參數 step=1。
如下圖所示,以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 為例:
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a * 10
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
>>> a[2:8:2]
array([2, 4, 6])
>>> a[3:5] = a[3:5] *10
>>> a
array([ 0, 1, 2, 30, 40, 5, 6, 7, 8, 9])
>>> import numpy as np
>>> # 二維
>>> b = np.array([[1,2,3],[4,5,6]])
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> b[:,1]
array([2, 5])
>>> b[:,0:2]
array([[1, 2],
[4, 5]])
數組的布爾值運用
布爾值也是 Python 中的一種數據類型,專門用來用于些邏輯判斷。常用的布爾值分別有:~ 反、& 并、| 或 。
現在我們新建一個數組 a,現在取出其中元素值大于 3 且小于 6 的所有元素,并改為 0,其他為 1:
>>> a = np.arange(0,10,1)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.sum(a>5)
4
>>> np.sum(~(a>5))
6
>>> a[(a>3)&(a<6)] = 0
>>> a[~(a>3)&(a<6)] = 1
>>> a
array([1, 1, 1, 1, 1, 1, 6, 7, 8, 9])
axis 的應用
如下圖所示,axis 實際上就是表示軸。對于一個二維空間,axis=1 代表橫軸,axis=0 按照豎軸。
>>> a = np.array([[1,4],[3,2]])
>>> b = np.array([[5,6],[7,8]])
>>> concatenate 的將兩個 Array 聚合起來
>>> np.concatenate((a,b),axis=0)
array([[1, 4],
[3, 2],
[5, 6],
[7, 8]])
>>> np.concatenate((a,b),axis=1)
array([[1, 4, 5, 6],
[3, 2, 7, 8]])
>>> 如果排序的時候,沒有指定 axis,默認 axis=1
>>> np.sort(a)
array([[1, 4],
[2, 3]])
>>> np.sort(a, axis=0)
array([[1, 2],
[3, 4]])
>>> 如果需要運算,需要指定對應的 axis
>>> a.sum()
10
>>> a.sum(axis=0)
array([4, 6])
>>> a.sum(axis=1)
array([5, 5])
>>> 通過 ndim 查看 array 的維度
>>> a.ndim
2
數列的創建和算術運算
等比數列:logspace 中,開始點和結束點是 10 的冪,0 代表 10 的 0 次方,9 代表 10 的 9 次方。生成從 10 的 a 次方到 10 的 b 次方之間按對數等分的 n 個元素的行向量。
等差數列:linspace 是 linear space 的縮寫,代表線性等分向量的含義。linspace() 通過指定 初始值、終值、元素個數 來創建等差數列的一維數組。注意:這個區間的端點可以任意的被排除在外。
通過 NumPy 可以自由地創建等差數組,同時也可以進行加、減、乘、除、求 n 次方和取余數。同時也可以進行加、減、乘、除、求 n 次方和取余數。
>>> # 在 100 和 1000 中生成 num=4 的等比序列
>>> np.logspace(2.0, 3.0, num=4)
array([ 100. , 215.443469 , 464.15888336, 1000. ])
>>> # endpoint=Falseb 表示 1000 不能在序列中
>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
array([100. , 177.827941 , 316.22776602, 562.34132519])
>>> # base=2.0 表示不再以 10 的冪,而是以 2 作為冪
>>> np.logspace(2.0, 3.0, num=4, base=2.0)
array([4. , 5.0396842 , 6.34960421, 8. ])
>>> a = np.linspace(1,10,5)
>>> b = np.linspace(10,1,5)
>>> a
array([ 1. , 3.25, 5.5 , 7.75, 10. ])
>>> b
array([10. , 7.75, 5.5 , 3.25, 1. ])
>>> np.add(a, b) #加法
array([11., 11., 11., 11., 11.])
>>> np.subtract(a, b) #減法
array([-9. , -4.5, 0. , 4.5, 9. ])
>>> np.multiply(a, b) #乘法
array([10. , 25.1875, 30.25 , 25.1875, 10. ])
>>> np.divide(a, b) #除法
array([ 0.1 , 0.41935484, 1. , 2.38461538, 10. ])
>>> np.power(a,b) #乘方
array([1.00000000e+00, 9.27034822e+03, 1.18030648e+04, 7.76659275e+02,
1.00000000e+01])
>>> np.remainder(a, b) #取余數
array([1. , 3.25, 0. , 1.25, 0. ])
重要 random 的函數
rand:根據給定維度生成 [0,1) 之間的數據,包含 0,不包含 1
randn:返回均值=0,標準差=1,具有標準正態分布
normal:normal 是正態分布,但可以修改均值和標準差,第一個是均值,第二個是標準差,還可以傳入 size
randint:返回隨機整數,范圍區間為[low,high),包含 low,不包含 high
choice:從給定的區間生成相對應個隨機數
>>> np.random.rand(3,4)
array([[0.00910588, 0.26719767, 0.96195156, 0.66325403],
[0.77108254, 0.73961889, 0.4332318 , 0.6130871 ],
[0.24454375, 0.96344155, 0.91942036, 0.16383334]])
>>>np.random.randn(3,4)
array([[0.31124855, 0.3970361 , 0.86046835, 0.36587692],
[0.94543601, 0.84770308, 0.13784751, 0.69106204],
[0.80672147, 0.78469807, 0.12474456, 0.38386812]])
>>> np.random.normal(5,1,size=(3, 4))
array([[5.05484712, 5.11948961, 4.74160469, 5.73573086],
[4.93939144, 6.52482878, 3.83668001, 6.62767368],
[4.74056406, 4.00017621, 6.32218076, 5.48900825]])
>>> np.random.randint(1, 10, 10)
array([3, 2, 6, 5, 7, 6, 6, 5, 1, 3])
>>> # 從給定的 0 到 3 中生成 3 個隨機數
>>> np.random.choice(3,3)
array([2, 0, 2])
如果想每次都固定隨機數,需要設置 seed 隨機種子:
總結
以上是生活随笔為你收集整理的python数据建模python_Python 数据建模总结和实战(共两万字)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件项目验收总结
- 下一篇: 通过文献DOI下载外文文献