Python数据分析--Numpy常用函数介绍(9)--Numpy中几中常见的图形
在NumPy中,所有的标准三角函数如sin、cos、tan等均有对应的通用函数。
一、利萨茹曲线
(Lissajous curve)利萨茹曲线是一种很有趣的使用三角函数的方式(示波器上显示出利萨茹曲线)。利萨茹曲线由以下参数方程定义:
x = A sin(at + n/2)
y = B sin(bt)
利萨茹曲线的参数包括 A 、 B 、 a 和 b 。为简单起见,我们令 A 和 B 均为1,设置的参数为 a=9 , b=8
import numpy as np
import matplotlib.pyplot as plt A=B=1
a=9
b=8 t = np.linspace(-np.pi, np.pi, 201) #使用linspace函数初始化变量t
x = np.sin(a * t + np.pi/2) # sin 函数和NumPy常量 pi 计算变量 x
y = np.sin(b * t) # sin函数计算变量y
plt.plot(x, y)
plt.show()
运行结果:

二、计算斐波那契数列
斐波那契数列的递推关系可以用矩阵来表示。斐波那契数列的计算等价于矩阵的连乘。可用两种方法计算了斐波那契数列
1)黄金比例计算方法,使用 rint 函数对浮点数取整但不改变浮点数类型
1,1,2,3,5,8,13,21,34,55,89,……
# 斐波那契数,用黄金分割公式或通常所说的比奈公式,加上取整函数
n = np.arange(1, 9)
sqrt5 = np.sqrt(5)
phi = (1 + sqrt5)/2 #利用根号5计算黄金比例,或者直接用phi=1+0.618
print("比例:",phi)
print('\n')
fibonacci = np.rint((phi**n - (-1/phi)**n)/sqrt5) #用rint()函数对浮点数取整但不改变浮点数类型
print("Fibonacci", fibonacci)
2)利用矩阵进行计算:用 matrix 函数创建矩阵
# 斐波那契数,用矩阵来表示斐波那契数列的递推关系
F = np.matrix([[1, 1], [1, 0]])
print ("8th Fibonacci:", (F ** 10)[0, 0])
运行结果:
比例: 1.618033988749895 Fibonacci [ 1. 1. 2. 3. 5. 8. 13. 21.]
8th Fibonacci: 89
三、方波
方波可以近似表示为多个正弦波的叠加。任意一个方波信号都可以用无穷傅里叶级数来表示。
需要累加很多项级数,且级数越多结果越精确,这里取 k=99(可以分别设置为9,50,1000等进行测试观察生成效果) 以保证足够的精度。绘制方波的步骤如下。
1) 初始化 t 和 k 开始,并将函数值初始化为
m = np.linspace(-np.pi, np.pi, 201) #从 -pi 到 pi 上均匀分布的 201 个点
k = np.arange(1,99) # k=99 以保证足够的精度,如图中的9 20 99显示的波形
k = 2 * k - 1
f = np.zeros_like(m)
2)使用 sin()求正弦函数,用sum()数计算各项级数:
for i in range(len(m)): #使用 sin 和 sum 函数进行计算
f[i] = np.sum(np.sin(k * m[i])/k)
f = (4 / np.pi) * f
3)绘制波形
plt.plot(t, f)
plt.show()

四、锯齿波和三角波
锯齿波和三角波也是常见的波形。和方波类似,也可以将它们表示成无穷傅里叶级数。对锯齿波取绝对值即可得到三角波。锯齿波的无穷级数表达式如下:
import numpy as np
import matplotlib.pyplot as plt t = np.linspace(-np.pi, np.pi, 201)
k = np.arange(1, 99)
f = np.zeros_like(t)
for i in range(len(t)):
f[i] = np.sum(np.sin(2 * np.pi * k * t[i])/k) f = (-2 / np.pi) * f
plt.plot(t, f, lw=1.0)
plt.plot(t, np.abs(f), lw=2.0)
plt.show()
运行结果:

Python数据分析--Numpy常用函数介绍(9)--Numpy中几中常见的图形的更多相关文章
- Python数据分析--Numpy常用函数介绍(6)--Numpy中矩阵和通用函数
在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat . matrix 以及 bmat 函数来创建矩阵. 一.创建矩阵 mat 函数创 ...
- Python数据分析--Numpy常用函数介绍(4)--Numpy中的线性关系和数据修剪压缩
摘要:总结股票均线计算原理--线性关系,也是以后大数据处理的基础之一,NumPy的 linalg 包是专门用于线性代数计算的.作一个假设,就是一个价格可以根据N个之前的价格利用线性模型计算得出. 前一 ...
- Python数据分析--Numpy常用函数介绍(6)--Numpy中与股票成交量有关的计算
成交量(volume)是投资中一个非常重要的变量,它是指在某一时段内具体的交易数,可以在分时图中绘制,包括日线图.周线图.月线图甚至是5分钟.30分钟.60分钟图中绘制. 股票市场成交量的变化反映了资 ...
- Python数据分析--Numpy常用函数介绍(5)--Numpy中的相关性函数
摘要:NumPy中包含大量的函数,这些函数的设计初衷是能更方便地使用,掌握解这些函数,可以提升自己的工作效率.这些函数包括数组元素的选取和多项式运算等.下面通过实例进行详细了解. 前述通过对某公司股票 ...
- Python数据分析--Numpy常用函数介绍(2)
摘要:本篇我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.学习读写文件的方法,并尝试函数式编程和NumPy线性代数运算,来学习NumPy的常用函数. ...
- Python数据分析--Numpy常用函数介绍(9)-- 与线性代数有关的模块linalg
numpy.linalg 模块包含线性代数的函数.使用这个模块,可以计算逆矩阵.求特征值.解线性方程组以及求解行列式等.一.计算逆矩阵 线性代数中,矩阵A与其逆矩阵A ^(-1)相乘后会得到一个单位矩 ...
- Python数据分析--Numpy常用函数介绍(3)
摘要:先汇总相关股票价格,然后有选择地对其分类,再计算移动均线.布林线等. 一.汇总数据 汇总整个交易周中从周一到周五的所有数据(包括日期.开盘价.最高价.最低价.收盘价,成交量等),由于我们的数据是 ...
- numpy常用函数学习
目录numpy常用函数学习点乘法线型预测线性拟合裁剪.压缩和累乘相关性多项式拟合提取符号数组杂项点乘法该方法为数学方法,但是在numpy使用的时候略坑.numpy的点乘为a.dot(b)或numpy. ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
随机推荐
- js判断json数据是否存在某字段的方法
方式一 !("key" in obj) if("name" in json){//json就是数组,name是你要找的值 console.log("有 ...
- EMS邮件统计
前提条件:管理员拥有"Organization Management"权限.并且启用邮件跟踪日志. 1.统计时间段内邮件发送情况 案例任务:统计一段时间内服务器"MAIL ...
- three车辆自由转弯(vue 极品飞车)
//最近没有时间整理代码,就这样吧 <template> <div> <div id="map"></div> </div&g ...
- Vue入坑日记: day - 01
前言 最近做了一些小项目,小组里写前端的确实有点拉胯,于是自己动手写前端,因为大一学过web前端基础,所以对HTML,CSS还有印象,就直接对JS下手了,学了两天把JS大致搞明白了,顺便对JQuery ...
- Java中有关clone方法的用法
一.clone在数组基本数据类型中的使用 public class Main { public static void main(String[] args) { int[] arr= {7,8,9} ...
- Java学习day33
线程池: 背景:经常创建和销毁.使用量特别大的资源,比如并发情况下的线程,对性能影响很大 思路:提前创建好多个线程.实现重复利用. 好处:提高响应速度,减少了创建新线程的时间:降低资源消耗,重复利用线 ...
- partTwo自动出题程序第二阶段
(1)题目避免重复: (2)可定制(数量/打印方式): 代码实现 import java.util.ArrayList;import java.util.Random;import java.util ...
- KotlinMall实战之注册部分MVP架构配置
包目录如下: ①BaseView部分:基本的回调 interface BaseView { fun showLoading() fun hideLoading() fun onError()} ②Ba ...
- python基础练习题(题目 对10个数进行排序)
day24 --------------------------------------------------------------- 实例037:排序 题目 对10个数进行排序. 分析:先输入1 ...
- 爬虫亚马逊Bestselling类别产品数据TOP100
1 # -*- coding: utf-8 -*- 2 # @Time : 2020/9/11 16:23 3 # @Author : Chunfang 4 # @Email : 3470959534 ...