天天看點

python工具——NumPy

NumPy(Numerical Python)是Python中科學計算的基礎包。

它是一個Python庫,提供多元數組對象,各種派生對象(如掩碼數組和矩陣),以及用于數組快速操作的各種API,有包括數學、邏輯、形狀操作、排序、選擇、輸入輸出、離散傅立葉變換、基本線性代數,基本統計運算和随機模拟等等。

NumPy的主要對象是同構多元數組。

它是一個元素表(通常是數字),所有類型都相同,由非負整數元組索引。

在NumPy次元中稱為軸 

numpy提供了python對多元數組對象的支援:ndarray

ndarray對象的屬性

ndarray.ndim - 數組的軸(次元)的個數
ndarray.shape - 數組的次元
ndarray.size - 數組元素的總數
ndarray.dtype - 一個描述數組中元素類型的對象
ndarray.itemsize - 數組中每個元素的位元組大小      

eg:

>>> import numpy as np
>>> a=np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> a.shape
(3, 4)
>>> a.ndim
2
>>> a.dtype.name
'int32'
>>> a.itemsize
4
>>> a.size
12
>>> type(a)
<class 'numpy.ndarray'>      

 數組建立

>>> b = np.array([2,3,4])
>>> b
array([2, 3, 4])
>>> b.dtype
dtype('int32')
>>> c=np.array([1.2,2.3,3.4])
>>> c.dtype
dtype('float64')
>>> d=np.array([(1.2,2,3),(4,5,6)])
>>> d
array([[1.2, 2. , 3. ],
       [4. , 5. , 6. ]])
>>> e=np.array([[1,2],[4,5]],dtype=complex)
>>> e
array([[1.+0.j, 2.+0.j],
       [4.+0.j, 5.+0.j]])      

索引、切片

>>> a
array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729], dtype=int32)
>>> a[2]
8
>>> a[2:5]
array([ 8, 27, 64], dtype=int32)
>>> a[:6:2]=-1000
>>> a
array([-1000,     1, -1000,    27, -1000,   125,   216,   343,   512,
         729], dtype=int32)
>>> a[ : :-1]
array([  729,   512,   343,   216,   125, -1000,    27, -1000,     1,
       -1000], dtype=int32)      
python工具——NumPy

與matplotlib

建構直方圖

import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 2, 0.5
v = np.random.normal(mu,sigma,10000)
plt.hist(v, bins=50, density=1)
plt.show()      
python工具——NumPy

pylab.hist

自動繪制直方圖

import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 2, 0.5
v = np.random.normal(mu,sigma,10000)
(n, bins) = np.histogram(v, bins=50, density=True)
plt.plot(.5*(bins[1:]+bins[:-1]), n)
plt.show()