Python:基本運算、基本函數(包括復數)、Math模塊、NumPy模塊


基本運算

  • x**2 : x^2 若x是mat矩陣,那就表示x內每個元素求平方
  • inf:表示正無窮
  • 邏輯運算符:and,or,not

 

字典的get方法

a.get(k,d)
  • 1
  • 1

get相當於一條if…else…語句。若k在字典a中,則返回a[k];若k不在a中,則返回參數d。

l = {5:2,3:4}
l.get(3,0)  返回值是4;
l.get1,0)  返回值是0
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

type函數:返回數據類型

 

type(x):返回x的類型
type(x)._name_:返回該類型的字符串表示
  • 1
  • 2
  • 1
  • 2

len函數:獲得list或str的長度

reload函數:將之前導入過的模塊重新加載進來

對復數的處理

complex(a,b)    #建立a+bj的復數
complex('2+1j') #將字符串形式的復數轉成復數
real(x)         #取復數x的實部
imag(x)         #取復數x的虛部
abs(x)          #求x的模
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

next函數

本函數是返回迭代器的下一個元素的值。 
Python 3中,只能使用next()函數(試圖調用.next()方法會觸發AttributeError)。

my_generator = (letter for letter in 'abcdefg')
next(my_generator)

>>>'a'
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

math模塊

Python內置math模塊,提供大部分常用數學運算函數。

使用 math 模塊

math 模塊是標准庫中的,所以不用安裝,可以直接使用。使用方法是:

>>> import math
  • 1
  • 1

常用函數

ceil(x) 取頂
floor(x) 取底
fabs(x) 取絕對值
factorial (x) 階乘
hypot(x,y) 計算sqrt(x*x+y*y)
pow(x,y) x的y次方
sqrt(x) 開平方
log(x)
log10(x)
trunc(x)  截斷取整數部分
isnan (x)  判斷是否NaN(not a number)
degrees (x) 弧度轉角度
radians(x) 角度轉弧度
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)

#例子:
a=math.atan(x)  #計算x的反正切值
seta=math.degrees(a)    #將弧度制表示的a轉換成角度制表示的seta
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Numpy模塊

模塊的導入

from numpy import array/mat/shape/*

mm=array([1,2,3])   //
ss=mat([1,2,3])
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Numpy中,mat必須是2維的,但是array可以是多維的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含於Array。所以matrix 擁有array的所有特性。 
在numpy中matrix的主要優勢是:相對簡單的乘法運算符號。例如,a和b是兩個matrices,那么a*b,就是矩陣積。

a=mat([1,2,3]) 是矩陣,則 a.A 則轉換成了數組,反之,a.M則轉換成了矩陣

數組array

數組array的參數是列表,有

a=array([1,2,3])
b=array([[1,2,3],[4,5,6])
  • 1
  • 2
  • 1
  • 2

它有以下一些屬性:

a.ndim      #秩,是數組軸的個數
a.shape     #數組的維度
a.size      #元素的總個數
a.dtype     #一個用來描述數組中元素類型的對象
a.dtype.name    #返回字符串形式的類型名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

常用的Numpy運算

取矩陣中的某一行 ss[1,:] 或該行的某兩列 ss[1,0:2] 
將數組轉換成矩陣 randMat=mat(random.rand(4,4)) 
矩陣求逆 randMat.I 
單位陣 eye(4) 
零矩陣 zeros((x,y)) 建立x行y列的零矩陣 
最大值和最小值 a.max(),a.min() ,而a.max(0) 表示按列選取每列的最大值 
最大/小元素的下標 a.argmax(),a.argmin()

#作為方法
x.sum()     #所有元素相加
x.sum(axis=0)   #按列相加
x.sum(axis=1)   #按行相加
#作為函數
sum(a,axis=0)

ss.mean()   
mean(a,axis=0(或1))  #按列或行求均值

var(a)
var(a,axis=0(或1))   #按列或行求方差

std(a)
std(a,axis=0(或1))   #按列或行求標准差

ss.T或ss.transpose()     #轉置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

shape的用法

  1. shape作為函數,可以讀取矩陣的長度,它的輸入參數可以是一個矩陣。例如:
shape(3):一個單獨的數字,返回值為空
shape([1]):一維矩陣[1]返回值為(1L,)  
shape([[1],[2]]) :二維矩陣[[1],[2]],返回兩個值
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  1. shape還可以作為矩陣的方法被調用,如
e=eye(3)
e.shape
>>(3L,3L)
e.shape[0]//讀取第一維度的長度
>>3L
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

tile函數:重復某個數組

a=[0,1,2]
b=tile(a,2)
>>>b=([0,1,2,0,1,2])
b=tile(a,(2,1))
>>>b=([[0,1,2], [0,1,2]])
b=tile(a,(1,2))
>>>b=([[0,1,2],[0,1,2]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

range函數:構造等差數列

range(1,5):代表從1到5,不包含5:[1,2,3,4]
range(1,5,2):代表從1到5,間隔為2,不包含5:[1,3]
range(5):代表從0到5,不包含5:[0,1,2,3,4]
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

sort,sorted,argsort函數:排序

x.sort():

只可以應用於list對象,且是原地排序,排序過后list發生改變。

x.argsort():

得到矩陣每行的升序排序

sorted函數

排序並生成新的容器

一. 如果是普通的列表,可以直接使用sorted,如

a=[1,4,2,3,7]
b=sorted(a)
  • 1
  • 2
  • 1
  • 2

二. 如果是由元祖構成的元祖列表,就比較復雜,假設有

L=[('b',2),('a',1),('c',3)]
  • 1
  • 1

有兩種寫法或格式

  1. cmp格式
sorted(L,cmp=lambda x,y:cmp(x[1],y[1])
  • 1
  • 1
  1. key格式
sorted(L,key=lambda x:x[1])
  • 1
  • 1

其中還有個reverse可選項,reverse=True 則輸出倒序,reverse=False 則輸出正序。

三. 如果是字典,那么格式也略復雜 
假設有dic={'a':31,'bc':52,'c':3,'33':56} 
在python 3中,可以寫成

sorted(dic.items(),key=lambda d:d[1],reserve=False)
  • 1
  • 1

其中,dic.items 返回字典鍵值對的元祖集合set 
還可以寫成

sorted(dic.items(),key=operator.itemgetter(1),reserve=False)
  • 1
  • 1

其中,operator.itemgetter() 函數可以獲取對象的某些維的數據

array的形狀操作

a.ravel()   #展平成一維數組,a.flatten() 與之類似
a.reshape(m,n)  #返回一個新數組,但原數組本身不變
a.resize(m,n)   #返回一個新數組的同時也改變原數組本身
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

其他通用函數或方法

a.copy()    #對元素進行復制
c=sqrt(a)   #計算元素的平方根
c=exp(a)    
c=abs(a)
c=add(a,b)  #a和b對應元素相加
c=subtract(a,b) #a和b對應元素相減
c=multiply(a,b) #a和b對應元素相乘
c=divide(a,b)   #a和b對應元素相除
nonzero(a)      #返回a中所有不為零的元素的下標位置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

對array和matrix而言,(a>3)或(a==3) 返回一個同類型的布爾值 
例如:

a=array([1,2,3])
b=(a==2)

>>>b=array([False,True,False])
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Numpy中的線性代數子庫linalg

linalg中包含了許多線性代數的方法

linalg.det(a)   #求a的行列式
linalg.inv(a)   #求a的逆矩陣
  • 1
  • 2
 
  • 1
  • 2

 

 

基本運算

  • x**2 : x^2 若x是mat矩陣,那就表示x內每個元素求平方
  • inf:表示正無窮
  • 邏輯運算符:and,or,not

基本函數

字典的get方法

a.get(k,d)
  • 1
  • 1

get相當於一條if…else…語句。若k在字典a中,則返回a[k];若k不在a中,則返回參數d。

l = {5:2,3:4}
l.get(3,0)  返回值是4;
l.get1,0)  返回值是0
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

type函數:返回數據類型

type(x):返回x的類型
type(x)._name_:返回該類型的字符串表示
  • 1
  • 2
  • 1
  • 2

len函數:獲得list或str的長度

reload函數:將之前導入過的模塊重新加載進來

對復數的處理

complex(a,b)    #建立a+bj的復數
complex('2+1j') #將字符串形式的復數轉成復數
real(x)         #取復數x的實部
imag(x)         #取復數x的虛部
abs(x)          #求x的模
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

next函數

本函數是返回迭代器的下一個元素的值。 
Python 3中,只能使用next()函數(試圖調用.next()方法會觸發AttributeError)。

my_generator = (letter for letter in 'abcdefg')
next(my_generator)

>>>'a'
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

math模塊

Python內置math模塊,提供大部分常用數學運算函數。

使用 math 模塊

math 模塊是標准庫中的,所以不用安裝,可以直接使用。使用方法是:

>>> import math
  • 1
  • 1

常用函數

ceil(x) 取頂
floor(x) 取底
fabs(x) 取絕對值
factorial (x) 階乘
hypot(x,y) 計算sqrt(x*x+y*y)
pow(x,y) x的y次方
sqrt(x) 開平方
log(x)
log10(x)
trunc(x)  截斷取整數部分
isnan (x)  判斷是否NaN(not a number)
degrees (x) 弧度轉角度
radians(x) 角度轉弧度
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)

#例子:
a=math.atan(x)  #計算x的反正切值
seta=math.degrees(a)    #將弧度制表示的a轉換成角度制表示的seta
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Numpy模塊

模塊的導入

from numpy import array/mat/shape/*

mm=array([1,2,3])   //
ss=mat([1,2,3])
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Numpy中,mat必須是2維的,但是array可以是多維的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含於Array。所以matrix 擁有array的所有特性。 
在numpy中matrix的主要優勢是:相對簡單的乘法運算符號。例如,a和b是兩個matrices,那么a*b,就是矩陣積。

a=mat([1,2,3]) 是矩陣,則 a.A 則轉換成了數組,反之,a.M則轉換成了矩陣

數組array

數組array的參數是列表,有

a=array([1,2,3])
b=array([[1,2,3],[4,5,6])
  • 1
  • 2
  • 1
  • 2

它有以下一些屬性:

a.ndim      #秩,是數組軸的個數
a.shape     #數組的維度
a.size      #元素的總個數
a.dtype     #一個用來描述數組中元素類型的對象
a.dtype.name    #返回字符串形式的類型名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

常用的Numpy運算

取矩陣中的某一行 ss[1,:] 或該行的某兩列 ss[1,0:2] 
將數組轉換成矩陣 randMat=mat(random.rand(4,4)) 
矩陣求逆 randMat.I 
單位陣 eye(4) 
零矩陣 zeros((x,y)) 建立x行y列的零矩陣 
最大值和最小值 a.max(),a.min() ,而a.max(0) 表示按列選取每列的最大值 
最大/小元素的下標 a.argmax(),a.argmin()

#作為方法
x.sum()     #所有元素相加
x.sum(axis=0)   #按列相加
x.sum(axis=1)   #按行相加
#作為函數
sum(a,axis=0)

ss.mean()   
mean(a,axis=0(或1))  #按列或行求均值

var(a)
var(a,axis=0(或1))   #按列或行求方差

std(a)
std(a,axis=0(或1))   #按列或行求標准差

ss.T或ss.transpose()     #轉置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

shape的用法

  1. shape作為函數,可以讀取矩陣的長度,它的輸入參數可以是一個矩陣。例如:
shape(3):一個單獨的數字,返回值為空
shape([1]):一維矩陣[1]返回值為(1L,)  
shape([[1],[2]]) :二維矩陣[[1],[2]],返回兩個值
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  1. shape還可以作為矩陣的方法被調用,如
e=eye(3)
e.shape
>>(3L,3L)
e.shape[0]//讀取第一維度的長度
>>3L
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

tile函數:重復某個數組

a=[0,1,2]
b=tile(a,2)
>>>b=([0,1,2,0,1,2])
b=tile(a,(2,1))
>>>b=([[0,1,2], [0,1,2]])
b=tile(a,(1,2))
>>>b=([[0,1,2],[0,1,2]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

range函數:構造等差數列

range(1,5):代表從1到5,不包含5:[1,2,3,4]
range(1,5,2):代表從1到5,間隔為2,不包含5:[1,3]
range(5):代表從0到5,不包含5:[0,1,2,3,4]
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

sort,sorted,argsort函數:排序

x.sort():

只可以應用於list對象,且是原地排序,排序過后list發生改變。

x.argsort():

得到矩陣每行的升序排序

sorted函數

排序並生成新的容器

一. 如果是普通的列表,可以直接使用sorted,如

a=[1,4,2,3,7]
b=sorted(a)
  • 1
  • 2
  • 1
  • 2

二. 如果是由元祖構成的元祖列表,就比較復雜,假設有

L=[('b',2),('a',1),('c',3)]
  • 1
  • 1

有兩種寫法或格式

  1. cmp格式
sorted(L,cmp=lambda x,y:cmp(x[1],y[1])
  • 1
  • 1
  1. key格式
sorted(L,key=lambda x:x[1])
  • 1
  • 1

其中還有個reverse可選項,reverse=True 則輸出倒序,reverse=False 則輸出正序。

三. 如果是字典,那么格式也略復雜 
假設有dic={'a':31,'bc':52,'c':3,'33':56} 
在python 3中,可以寫成

sorted(dic.items(),key=lambda d:d[1],reserve=False)
  • 1
  • 1

其中,dic.items 返回字典鍵值對的元祖集合set 
還可以寫成

sorted(dic.items(),key=operator.itemgetter(1),reserve=False)
  • 1
  • 1

其中,operator.itemgetter() 函數可以獲取對象的某些維的數據

array的形狀操作

a.ravel()   #展平成一維數組,a.flatten() 與之類似
a.reshape(m,n)  #返回一個新數組,但原數組本身不變
a.resize(m,n)   #返回一個新數組的同時也改變原數組本身
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

其他通用函數或方法

a.copy()    #對元素進行復制
c=sqrt(a)   #計算元素的平方根
c=exp(a)    
c=abs(a)
c=add(a,b)  #a和b對應元素相加
c=subtract(a,b) #a和b對應元素相減
c=multiply(a,b) #a和b對應元素相乘
c=divide(a,b)   #a和b對應元素相除
nonzero(a)      #返回a中所有不為零的元素的下標位置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

對array和matrix而言,(a>3)或(a==3) 返回一個同類型的布爾值 
例如:

a=array([1,2,3])
b=(a==2)

>>>b=array([False,True,False])
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Numpy中的線性代數子庫linalg

linalg中包含了許多線性代數的方法

linalg.det(a)   #求a的行列式
linalg.inv(a)   #求a的逆矩陣


免責聲明!

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



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