zoukankan      html  css  js  c++  java
  • Python之复数、分数、大型数组数学运算(complex、cmath、numpy、fractions)

    一、复数的数学运算
    复数可以用使用函数 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.356612711218173j)
    # (-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 模块中的函数执行计算要快的多
    
    
  • 相关阅读:
    爬虫之爬取网贷之家在档P2P平台基本数据并存入数据库
    Python抓取第一网贷中国网贷理财每日收益率指数
    div左右布局
    IIS7.0+SqlServer2012,进行.net网站发布的安装全过程
    SpringMVC+Mybatis+Mysql实战项目学习环境搭建
    文本框字符长度动态统计
    html里面自定义弹出窗口
    windows下取linux系统里面的文件
    网页中的电话号码实现一键直呼
    测试
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10472067.html
Copyright © 2011-2022 走看看