本文實例講述了Python科學計算包numpy用法。分享給大家供大家參考,具體如下:
1 數據結構
numpy使用一種稱為ndarray的類似Matlab的矩陣式數據結構管理數據,比python的列表和標準庫的array類更為強大,處理數據更為方便。
1.1 數組的生成
在numpy中,生成數組需要指定數據類型,默認是int32,即整數,可以通過dtype參數來指定,一般用到的有int32、bool、float32、uint32、complex,分別代表整數、布爾值、浮點型、無符號整數和復數
一般而言,生成數組的方法有這么幾種:
以list列表為參數生成(用tolist方法即可轉換回list):
In[3]: a = array([1, 2, 3])In[4]: aOut[4]: array([1, 2, 3])In[5]: a.tolist()Out[5]: [1, 2, 3]
指定起點、終點和步長生成等差序列或等比數列:
In[7]: a = arange(1, 10, 2)In[8]: aOut[8]: array([1, 3, 5, 7, 9])
In[13]: a = linspace(0, 10, 5)In[14]: aOut[14]: array([ 0. , 2.5, 5. , 7.5, 10. ])
In[148]: a = logspace(0, 3, 10) # 0表示起點為10^0,3表示起點為10^3,基數通過base參數指定In[149]: aOut[148]: array([ 1. , 2.15443469, 4.64158883, 10. , 21.5443469 , 46.41588834, 100. , 215.443469 , 464.15888336, 1000. ])
從迭代器中生成:
In[17]: iter = (i for i in range(5))In[18]: a = fromiter(iter, dtype=int32)In[19]: aOut[19]: array([0, 1, 2, 3, 4])
從函數中生成:
In[156]: def f(i, j):... return abs(i-j)... In[157]: fromfunction(f, (4, 4))Out[156]: array([[ 0., 1., 2., 3.], [ 1., 0., 1., 2.], [ 2., 1., 0., 1.], [ 3., 2., 1., 0.]])
還可以用zeros、ones、empty等函數快速創建數組。
矩陣視為二維數組:
In[24]: b = array([arange(5), arange(1, 6), arange(2, 7)])In[25]: bOut[25]: array([[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6]])
根據相同的方法可以拓展到更高維。
另外,我們還可以生成自定義數據格式的數組(稱為結構數組),用來記錄電子表格或數據庫中一行數據的信息:
In[61]: t = dtype([('name', str, 40), ('number', int32), ('score', float32)])In[62]: tOut[62]: dtype([('name', '<U40'), ('number', '<i4'), ('score', '<f4')])In[63]: students = array([('Tom', 10, 80), ('Jenny', 11, 90.5), ('Mike', 9, 98.5)], dtype=t)In[64]: studentsOut[64]: array([('Tom', 10, 80.0), ('Jenny', 11, 90.5), ('Mike', 9, 98.5)], dtype=[('name', '<U40'), ('number', '<i4'), ('score', '<f4')])In[65]: students[1]Out[65]: ('Jenny', 11, 90.5)后面我們會看到pandas提供了一種更精致的方法處理記錄。
1.2 數組的索引
簡單的下標索引:
In[30]: a[2]Out[30]: 2In[31]: b[2, 1]Out[31]: 3
新聞熱點
疑難解答