目录
所用到的库
import numpy as np
from pylab import *
import matlab
import matlab.engine
关于
engine
的安装, 参考官网, 安装matlab引擎, 并配置环境变量.
pylab
模块里面集成了matplotlib和numpy
处理CSV数据
导入
import pandas as pd
data = pd.read_csv('file.csv')
展示表头
print(data.columns)
展示前几行
print(data.head())
数据处理
data['new_column'] = data['column_name'].apply(lambda x: x*2)
导出
data.to_csv('new_file.csv')
创建数组
一维数组
arrange(start, stop, step=1)
尤其注意, 左闭右开
a = arrange(1,5,2) # [1 3]
a = arrange(1,5) # [1 2 3 4]
a = arrange(5) # [0 1 2 3 4]
linpsace(start, stop, num=50, endpoint=True)
尤其注意, 默认左闭右闭,
num
是元素的总个数
b = linspace(1,5,2) # [1. 5.]
b = linspace(1,5,4) # [1. 2.33333333 3.66666667 5. ]
b = linspace(1,5,5) # [1. 2. 3. 4. 5.]
logspace(start, stop, num=50, endpoint=True, base=10.0)
默认底数为10
c = logspace(0,3,4,base=2) # [1. 2. 4. 8.]
c = logspace(1,10000,3) # [ 10. 100. 1000.]
ones(num) & zeros(num)
d = zeros(4) # [0. 0. 0. 0.]
d = ones(4) # [1. 1. 1. 1.]
矩阵
a = array([[1,2,3],[4,5,6],[7,8,9]])
[[1 2 3]
[4 5 6]
[7 8 9]]
b = diag([1,2,3]) # 指定的对角线矩阵
[[1 0 0]
[0 2 0]
[0 0 3]]
c = eye(4) # 单位矩阵
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
d = ones((4,4)) # 全1矩阵
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
e = zeros((4,4)) # 全0矩阵
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
f = rand(4,4) # 随机矩阵(0~1, 均匀分布)
[[0.91782558 0.91751528 0.09254947 0.4320638 ]
[0.7536642 0.16755237 0.28183963 0.58986432]
[0.13169926 0.96850544 0.11535029 0.65863529]
[0.5937231 0.63241285 0.0606377 0.42779934]]
g = randn(4,4) # 随机矩阵(正态分布, 均值0, 标准差1)
[[-1.61953149 0.49500524 1.14117991 0.62266261]
[-1.31299362 -0.84745093 -0.49375193 0.97512753]
[ 0.30857059 -0.87327493 1.15934338 -0.7429645 ]
[ 0.74203638 0.30402119 0.45577939 -0.96979675]]
数组运算
一维数组
a = array([1, 3])
b = array([2, 5, 7])
c = signal.convolve(a, b) # 卷积
print(c) # [ 2 11 22 21]
q,r = signal.deconvolve(b, a) # 除法的商和余数
print(q,r) # [ 2. -1.] [ 0. 0. 10.]
convolve
函数pylab
自带, 但是deconvolve
函数需要scipy
库
矩阵
实例
动态更新数据
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as antt
fig = plt.figure()
img = fig.add_subplot(111)
(a,) = img.plot(np.random.rand(365), "green")
def draw(data):
a.set_xdata(range(len(data))) # 设置x轴数据
a.set_ydata(data) # 设置y轴数据
img.relim() # 重新计算图表的限制
img.autoscale_view() # 自动调整图表的视图以显示所有的数据
return (a,)
def getRanData():
data = []
while True:
data.append(np.random.rand())
yield data # 每次迭代后yield一个值
b = antt.FuncAnimation(fig, draw, getRanData, interval=200)
plt.show()
绘制后更新视图
土方法:
plt.draw()
plt.pause(0.1)
非常非常卡
好方法:
fig = plt.figure()
img = fig.add_subplot(111)
fig.clf() # 清空画布
draw() # 画图
img.relim() # 重新计算图表的限制
img.autoscale_view() # 自动调整图表的视图以显示所有的数据
plt.gcf().canvas.draw() # 更新画布
plt.gcf().canvas.flush_events() # 刷新画布