zhyDaDa的个人站点

目录


所用到的库

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()  # 刷新画布
Avatar photo
我是 zhyDaDa

前端/UI/交互/独立游戏/JPOP/电吉他/游戏配乐/网球/纸牌魔术

发表回复