Python之复数、分数、大型数组数学运算(complex、cmath、numpy、fra。。。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python之复数、分数、⼤型数组数学运算(complex、cmath、
numpy、fra。

⼀、复数的数学运算
复数可以⽤使⽤函数 complex(real, imag) 或者是带有后缀j的浮点数来指定
a=complex(2,4)
print(a) # (2+4j)
b=2-5j
# 获取对应的实部、虚部和共轭复数
print(b.real,b.imag,b.conjugate()) # 2.0 -5.0 (2+5j)
# 数学运算
print(a+b) # (4-1j)
print(abs(a)) # 4.47213595499958
复数函数⽐如正弦、余弦或平⽅根,使⽤ cmath 模块
import cmath
print(cmath.sin(a))
print(cmath.cos(a))
print(cmath.exp(a))
# (24.83130584894638-11.356612*********j)
# (-11.36423470640106-24.814651485634183j)
# (-4.829809383269385-5.5920560936409816j)
使⽤ numpy 也可以处理复数
# 构造复数数组
import numpy as np
c=np.array([1+2j,2+3j,3+4j])
print(c) # [ 1.+2.j 2.+3.j 3.+4.j]
print(c+2) # [ 3.+2.j 4.+3.j 5.+4.j]
print(np.sin(c)) # [ 3.16577851 +1.95960104j 9.15449915 -4.16890696j 3.85373804-27.01681326j]
补充:
# Python的标准数学函数确实情况下并不能产⽣复数值,必须使⽤cmath
print(cmath.sqrt(-1)) # 1j
⼆、分数运算
fractions 模块可以被⽤来执⾏包含分数的数学运算
from fractions import Fraction
a=Fraction(1,3)
b=Fraction(1,4)
print(a,b,a+b) # 1/3 1/4 7/12
c=a*b
print(c) # 1/12
三、⼤型数组运算
⾸先了解:标准列表对象和 NumPy 数组对象之间的差别
标准列表对象:
x = [1, 2, 3, 4]
y = [5, 6, 7, 8]
print(x * 2) # [1, 2, 3, 4, 1, 2, 3, 4]
# print(x + 10) # 报错了TypeError: can only concatenate list (not "int") to list
print(x + y) # [1, 2, 3, 4, 5, 6, 7, 8]
Numpy arrays
import numpy as np
ax = np.array([1, 2, 3, 4])
ay = np.array([5, 6, 7, 8])
print(ax * 2) # array([2, 4, 6, 8])
print(ax + 10) # array([11, 12, 13, 14])
print(ax + ay) # array([ 6, 8, 10, 12])
print(ax * ay) # array([ 5, 12, 21, 32])
计算多项式的值,即每个列表元素进⾏多项式运算
def f(x):
return 3*x**2 - 2*x + 7
print(f(ax)) # [ 8 15 28 47]
多维数组,索引问题,列表基层嵌套,就是⼏维数组,索引:逗号分不同维度的
# eg (1:3,2:3) ⼆维数组中取第⼀层索引1到3,再取索引1到3列表中索引的2:4
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) # ⼆维数组
print(a[1:3,1:3]) # [[ 6 7] [10 11]]
print(a[:,1]) # [ 2 6 10]
print(a+2) # [[ 3 4 5 6] [ 7 8 9 10] [11 12 13 14]]
补充:numpy 优势:numpy中的函数要⽐循环数组并使⽤ math 模块中的函数执⾏计算要快的多。

相关文档
最新文档