• Numpy学习笔记(四)


    前段时间又重新回顾了线性代数的课本,感悟颇多。才渐渐体会到,大学数学课程的安排,分割为微积分、线性代数和概率论是多么的合理!

    矩阵,说它多重要都不为过,尤其是大型复杂的计算。Numpy对于Python的扩展,相当程度体现在对于矩阵运算的支持上。

    Example1

    创建矩阵

    # -*-coding:utf-8-*-

    import numpy as np

    import matplotlib.pyplot as plt

     

    # 创建矩阵

    A = np.mat('1 2 3; 4 5 6; 7 8 9')

    print "Creation from string", A

    # T属性即为转置矩阵

    print "Transpose", A.T

    # I属性为逆矩阵

    print "Inverse", A.I

    # 通过Numpy数组创建

    print "Creation from array", np.mat(np.arange(9).reshape(3, 3))

    结果如下:

    Example2

    从已有矩阵创建新矩阵

    # 从已有矩阵创建新矩阵

    A = np.eye(2)

    print 'A', A

    B = A * 2

    print "B", B

    print "Compound matrix ", np.bmat("A B; A B") # 有点像分块矩阵

    结果如下:

    Example3

    除法运算

    # 除法运算

    a = np.array([2, 6, 5])

    b = np.array([1, 2, 3])

    print "Divide", np.divide(a, b), np.divide(b, a) # 相当于"/"

    print "True Divide", np.true_divide(a, b), np.true_divide(b, a)

    print "Floor Divide", np.floor_divide(a, b), np.floor_divide(b, a) # 相当于"//"

    结果如下:

    注意:这里尤为需要注意的是divide和floor divide,两者的区别在于分子分母有浮点数时的计算方式不同

    Example4

    模运算

    # 模运算

    a = np.arange(-4, 4)

    print "a", a

    print "Remainder", np.remainder(a, 2) # 相当于"%", mod

    print "Fmod", np.fmod(a, 2) # fmod的区别在于处理负数的方式

    结果如下:

    Example5

    创建斐波那契数列

    # 创建斐波那契数列

    F = np.matrix([[1, 1], [1, 0]]) # 特殊的矩阵

    print "F", F

    print "8th Fibonacci", (F**7)[0, 0]

    结果如下:

    其实很简单!

    Example6

    利萨如曲线

    X = A sin(at+n/2)

    Y = B sin(bt)

    这里我们令A=B=1

    # 绘制利萨如曲线

    # 初始化相关参数

    a = 9

    b = 8

    n = np.pi

    t = np.linspace(-np.pi, np.pi, 201) # 产生-pi~pi均匀分布的201个点

    x = np.sin(a * t + n / 2)

    y = np.sin(b * t)

    plt.plot(x, y)

    plt.show()

    结果如下:

    这里想要表达的是Numpy内置的函数非常的好用!

     

    总结:这一次的练习还算简单,当然这只是入门,为接下来的工作打好基础。下一次要学习的,是Numpy中的一些经常用到的模块,不得不说,Numpy的功能的确强大,Matplotlib的制图能力亦然。

    源代码:https://github.com/Lucifer25/Learn-Python/blob/master/Numpy/exercise4.py

    却道,此心安处是吾乡
  • 相关阅读:
    【BZOJ 1185】 凸包+旋转卡壳
    【BZOJ 2829】 2829: 信用卡凸包 (凸包)
    【BZOJ 1045】 1045: [HAOI2008] 糖果传递
    【BZOJ 2453|bzoj 2120】 2453: 维护队列 (分块+二分)
    【BZOJ 3343 】 分块
    【BZOJ 1069】 凸包+旋转卡壳
    【NOIP 2016 总结】
    【无聊放个模板系列】洛谷 负环 模板
    【无聊放个模板系列】BZOJ 3172 (AC自动机)
    【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])
  • 原文地址:https://www.cnblogs.com/lucifer25/p/5993836.html
Copyright © 2020-2023  润新知