python--numpy模塊、spicy模塊、 matplotlib模塊


一:numpy模塊

ndarray:存儲單一數據類型的多維數組

ufunc:能夠對數組進行處理的函數(universal function object)

#numpy 中arange用法,指定開始值/終止值/步長來創建一維數組數組,但是數組不包括終值。
 arange_array=np.arange(1,2,0.1)
 re_arange_array=arange_array.reshape(2,5)#使用reshape重新定義數組的維度或者數組的大小
 print "arange_array is array,it's %s " % arange_array
 print "re_arange_array is:%s" % re_arange_array
#linspace函數通過指定開始值、終值和元素個數來創建一維數組,可以通過endpoint關鍵字指定
 #是否包括終值,缺省設置是包括終值:
 linspace_array=np.linspace(0, 1, 12)#創建的是等差數列!
 print "linspace_array is: %s" % linspace_array
#logspace創建等比數列,產生起始值10^起始值,到10^終止值,n個值的一維數組
 logspace_array=np.logspace(0,2,30)
 print "logspace array is: %s" % logspace_array
def fun2(i,j):
 return (i+1)*(j+1)
 b=np.fromfunction(fun2,(9,9))
 #fromfunction從函數創建數組,自定義函數,從函數中創建數組;
 #frompyfunc的調用格式為frompyfunc(func, nin, nout),nin是此函數的輸入參數的個數,nout是此函數的返回值的個數。
 print 'b is:%s' %b

Data type objects (dtype) and 結構數組

數據類型(data type object, ie. numpy.dtype的實例)描述的是array對象怎樣解析內存中的固定大小的內存段。它描素了數據的一下幾個方面:

  1. 數據的類型(integer, float, Python object, etc.)
  2. 數據的大小(how many bytes is in e.g. the integer)
  3. 二進制位的存儲順序(little-endian or big-endian)
  4. 如果數據類型(data type)是一條記錄,即其他數據類型的組合(e.g., describing an array item consisting of an integer and a float),這和C語言里面的struct類似。
  1. 記錄的各個數據的名稱是什么,怎么獲取這個子數據。
  2. 每個子數據的的類型是什么。
  3. 每個子數據都使用哪一部分內存。
  1. 如果數據是一個子數組,它的形狀是什么。

  ndrray_數據結構

 import numpy as np;

persontype=np.dtype({ 'names':['name','age','weight'], 'formats':['S32','i','f']})
a = np.array([("zhuang",32,75.5),("wang",24,65.2)],dtype=persontype) 
print a[1]['name']
print a.strides

 擴展:常用tile函數和repeat函數擴展numpy模塊

1:numpy.tile(A,B)函數:重復A,B次,這里的B可以時int類型也可以是元組類型

>>> import numpy
>>> numpy.tile([0,0],5)#在列方向上重復[0,0]5次,默認行1次
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> numpy.tile([0,0],(1,1))#在列方向上重復[0,0]1次,行1次
array([[0, 0]])
>>> numpy.tile([0,0],(2,1))#在列方向上重復[0,0]1次,行2次
array([[0, 0],
       [0, 0]])
>>> numpy.tile([0,0],(3,1))
array([[0, 0],
       [0, 0],
       [0, 0]])
>>> numpy.tile([0,0],(1,3))#在列方向上重復[0,0]3次,行1次
array([[0, 0, 0, 0, 0, 0]])
>>> numpy.tile([0,0],(2,3))<span style="font-family: Arial, Helvetica, sans-serif;">#在列方向上重復[0,0]3次,行2次</span>
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

2:repeat(A):重復A次  repeat([A,B]):對應重復A次,B次

>>> from numpy import *
>>> repeat(7.,4)
array([ 7.,  7.,  7.,  7.])
>>> a=array([10,20])
>>> a.repeat([3,2])
array([10, 10, 10, 20, 20])
>>> repeat(a,[3,2])
array([10, 10, 10, 20, 20])
>>> a=array([[10,20],[30,40]])
>>> a.repeat([3,2],axis=0)
array([[10, 20],
       [10, 20],
       [10, 20],
       [30, 40],
       [30, 40]])
>>> a.repeat([3,2],axis=1)
array([[10, 10, 10, 20, 20],
       [30, 30, 30, 40, 40]])
>>> 

3:sum函數:

sum(a,axis=0):普通的相加

sum(axis=1) :將一個矩陣的每一行向量相加

4:argsort函數:返回排序后元素在原對象中的下標,屬於numpy中的函數

區別於sort函數和sorted函數

1)、sort 只是list類型的內建函數,對其他非列表型序列不適用。

(2)、sorted是所有類型的內建函數 ,返回排序后的對象,原對象不改變。進階:sorted(a,key=...,reversed=True)

a=array([(5,4,3,2,6),(7,8,0,1,9)])
>>> a
array([[5, 4, 3, 2, 6],
       [7, 8, 0, 1, 9]])
>>> a.argsort()
array([[3, 2, 1, 0, 4],
       [2, 3, 0, 1, 4]], dtype=int64)

5:zeros:創建0矩陣

二:spicy模塊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM