• Python常用命令总结【持续更新】


    本来是草稿,趁着今天1024水一个勋章

    目录

    前言

    文件读写

    遍历文件夹/文件

    遍历文件夹2

    生成随机颜色

    numpy创建一个空白图像/数组,opencv画线

    np创建一个指定颜色的图像/数组

    生成随机数/随机矩阵

    关于python中函数形参的问题

    plt画图

    ==>最简单的情况

    ==> 指定颜色

     ==> 画散点图

    ==> 添加label注释

    ==> XY轴刻度问题

     ==>沿XY轴翻转镜像

    ==>显示网格

    ==>保存画的图像

    plt画图坐标轴相关设置

    坐标轴字体

    设置坐标轴刻度字号

    设置坐标轴显示范围

    设置坐标轴线粗细

    设置坐标轴标签

    设置坐标轴科学计数法表示

    设置坐标轴以固定间隔显示刻度

    plt多张图画在一起

    plt画图时显示中文异常

    matplotlib解决负号无法显示

    将txt数据直接读取为ndarray数组

    删除np数组中的某行或某列

    画三维图

    Python拟合曲线


    前言

    python确实好用,有些库甚至随便猜都能猜对一些函数名。但是,库太多了,功能函数名根本记不住(我是记不住),每次用到什么都要C一下。关键是C站中的文章太多了,很难定位到自己适合且舒服的用法,干脆就把自己用到的记录下来,这样下次忘记直接在自己文章里搜索,会更加精准快捷。

    开始

    记录的顺序可能会很乱,用到什么记什么。更多的都是常用的基础功能,奇淫技巧什么的咱也不会。

    文件读写

    1. with open('nameyoulike.txt', 'w') as f:
    2. f.write("Hello World!")

    遍历文件夹/文件

    1. for dirpath, dirnames, filenames in os.walk(root):
    2. for dirpath2 in filenames:
    3. path.append(os.path.join(dirpath, dirpath2))

     判断文件/路径是否存在

    if os.path.exists(path):

    遍历文件夹2

    1. path_full = []
    2. filename = []
    3. for root, dirs, files in os.walk(file):
    4. if root != file:
    5. break
    6. for file in files:
    7. path = os.path.join(root, file)
    8. path_full.append(path)
    9. filename.append(file)
    10. print(path)

    生成随机颜色

    1. import random
    2. def get_random_color():
    3. """获取一个随机的颜色"""
    4. r = lambda: random.uniform(0,1)
    5. return [r(),r(),r(),1]

     生成三通道颜色,0-255之间

    1. def get_random_color3():
    2. """获取一个随机的颜色"""
    3. r = lambda: random.uniform(0,255)
    4. return [r(),r(),r()]

    numpy创建一个空白图像/数组,opencv画线

    1. import numpy as np
    2. import cv2
    3. image = np.zeros((512,512,3),np.uint8) #创建一个黑色面板
    4. cv2.line(image,(0,0),(511,511),(255,0,0),3) #画直线
    5. cv2.imshow("绘制直线",image)
    6. cv2.waitKey()

    虽然指定的线的颜色是(255,0,0),但是三个通道的顺序是BGR,所以线是蓝色的。
    想让线是红色的话,又不修改颜色,可以变换一下图像的通道顺序,将BGR改为RGB。

    1. import numpy as np
    2. import cv2
    3. image = np.zeros((512,512,3),np.uint8) #创建一个黑色面板
    4. cv2.line(image,(0,0),(511,511),(255,0,0),3) #画直线
    5. image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) #色彩空间转换
    6. cv2.imshow("绘制直线",image)
    7. cv2.waitKey()

     

     这里画线使用的颜色就可以用随机颜色

    cv2.line(image,(0,0),(511,511),get_random_color3(),3)

    np创建一个指定颜色的图像/数组

    1. img = np.zeros((300, 400, 3), np.uint8)
    2. # 浅灰色背景
    3. img.fill(200) # 这是对三个通道全部填充固定数值
    4. cv2.imshow('img', img)
    5. cv2.waitKey(0)
    6. # 我曾这样尝试对每个通道填充不同的数值
    7. # img.fill((255,0,0)),但是失败

     

    只要思想不滑坡,换个方法再来对每个通道填充不同数值。不是不可以对3通道同时填充吗,那我就单独填充。如下:

    1. img = np.zeros((300, 400, 3), np.uint8)
    2. img[:,:,0].fill(255)
    3. img[:,:,1].fill(0)
    4. img[:,:,2].fill(0)
    5. cv2.imshow('img', img)
    6. cv2.waitKey(0)

    图像应该是什么颜色,蓝色。

     

    生成随机数/随机矩阵

    1. # 生成3*100的随机矩阵,随机值0-1之间
    2. a=np.random.random(size=(3,100))
    3. # 生成随机值0-100之间
    4. a=np.random.random(size=(3,100))*100
    5. # 生成1-10之间的随机整数
    6. a=np.random.randint(1,10,size=(3,100))

    关于python中函数形参的问题

    参考这个写的

    python中函数的四种形参_Kaiser king的博客-CSDN博客_python函数形参

    plt画图

    ==>最简单的情况

    1. a=np.random.random(size=(3,100))*10 # 生成的随机值在0-10之间
    2. plt.figure()
    3. # a[0,:]是个行向量,也可以是列向量
    4. plt.plot(a[:, 0]) # 最简单的情况,没有其他参数
    5. plt.axis('equal')
    6. plt.show()

    ==> 指定颜色

    plt.plot(a[:, 0],color=(1,0,0))
    可以添加颜色参数,指定颜色,这里的颜色范围需要给0-1之间,而且顺序是RGB
    颜色也可以使用color='red'

     

     ==> 画散点图

    plt.plot(a[:, 0],".",color="red")

     

    ==> 添加label注释

    plt.plot(a[:, 0],color="red",label="info")
    plt.legend()
    添加注释label的话,一定要有下面一行才可以显示出label
    

    ==> XY轴刻度问题

    假如删除掉plt.axis('equal'),看下效果,XY轴刻度不一致,就相当于是放大拉伸局部,可以观察的更清楚。

    1. a=np.random.random(size=(100,3))*10
    2. plt.figure()
    3. plt.plot(a[:, 0],color="red")
    4. plt.show()

     ==>沿XY轴翻转镜像

    plt.gca().invert_xaxis()  # 沿x轴翻转
    plt.gca().invert_yaxis()  # 沿y轴翻转

    ==>显示网格

    1. plt.grid(axis="y") #y轴显示网格线 
    2. plt.grid(axis="x"

    ==>保存画的图像

    在创建画布的时候可以设置尺寸,这个尺寸好像是英寸,假如想保存1920像素,那么宽度就要除以dpi得到英寸。

    1. a=np.random.random(size=(100,3))*10
    2. plt.figure(figsize=(1920/200, 1080/200),dpi=200)
    3. plt.plot(a[:, 0],color="red")
    4. plt.savefig(u"2022年10月22日.jpg")
    5. plt.show()

    plt画图坐标轴相关设置

    坐标轴字体

    plt.rc('font',family='Times New Roman')

    设置坐标轴刻度字号

    plt.xticks(fontsize=14) 
    plt.yticks(fontsize=14)

    设置坐标轴显示范围

    plt.xlim(0,1000)
    plt.ylim(-3000,-400)

    设置坐标轴线粗细

    ax=plt.gca();#获得坐标轴的句柄
    ax.spines['bottom'].set_linewidth(1);###设置底部坐标轴的粗细
    ax.spines['left'].set_linewidth(1);####设置左边坐标轴的粗细

    设置坐标轴标签

    #front是标签属性:包括字体、大小等
    font = {'family' : 'Times New Roman',
    'weight' : 'normal',
    'size'   : 18,
    }
    plt.xlabel("Episode",font)         
    plt.ylabel(r"Average Reward",font) 


    设置坐标轴科学计数法表示

    plt.ticklabel_format(axis="y", style="sci", scilimits=(0,0))

    设置坐标轴以固定间隔显示刻度

    x_major_locator=MultipleLocator(15)#以每15显示
    y_major_locator=MultipleLocator(3)#以每3显示
    ax=plt.gca()
    ax.xaxis.set_major_locator(x_major_locator)
    ax.yaxis.set_major_locator(y_major_locator) 

    plt多张图画在一起

    1. fig = plt.figure()
    2. fig.suptitle("result")
    3. for i in range(0,6):
    4. print(i)
    5. ax = fig.add_subplot(2, 3, i+1)
    6. ax.plot(b,a[i],'.',color='g',label=str[i])
    7. # ax.plot(y[:][i],color='pink',label='Predict')
    8. ax.legend()
    9. ax.grid(axis='y')
    10. plt.show()

    plt画图时显示中文异常

    添加一行即可,不需要什么下载字体库,基本都有字体的

    plt.rcParams['font.sans-serif'] = ['SimHei']

    matplotlib解决负号无法显示

    plt.rcParams['axes.unicode_minus'] =False

    将txt数据直接读取为ndarray数组

    1. file = "nameyoulike.txt"
    2. a = np.loadtxt(file)

    但是有个前提,就是txt中的每行数据的列数要相同

    删除np数组中的某行或某列

    1. file = "nameyoulike.txt"
    2. a = np.loadtxt(file)
    3. print(a)
    4. b=np.delete(a,1,0)
    5. print(b)
    6. # delete中的第三个参数表示数组的维度,表示删除第几维的数据
    7. # 第二个参数表示要删除维度下的序号
    8. # 比如delete(a,1,0),第三个参数0表示删除行,第二个参数1表示删除第1行
    9. # 再比如delete(a,3,1),第三个参数1表示删除列,第二个参数3表示删除第3列

     

    画三维图

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. from mpl_toolkits.mplot3d import Axes3D
    4. fig = plt.figure()
    5. #创建3D坐标系
    6. ax = fig.gca(projection='3d')
    7. file = "x.txt"
    8. a = np.loadtxt(file)
    9. for val in a:
    10. #前三个参数为起点,后三个参数为终点
    11. #不想显示箭头的话,将最后一个参数0.1改为0
    12. ax.quiver(0,0,0,val[0],val[1],val[2],arrow_length_ratio=0.1)
    13. ax.set_xlim(0,0.2)
    14. ax.set_ylim(0,0.2)
    15. ax.set_zlim(-1,0)
    16. plt.show()

    Python拟合曲线

    1. import matplotlib.pyplot as plt
    2. import numpy as np
    3. x = [1260, 1360, 1460, 1560, 1760, 1960, 2060, 2360,2550]
    4. y = [3393, 2793, 2493, 2293, 1793, 1393, 1353, 1082, 1029]
    5. z1 = np.polyfit(x, y, 3) # 用3次多项式拟合,输出系数从高到0
    6. p1 = np.poly1d(z1) # 使用次数合成多项式
    7. y_pre = p1(x)
    8. plt.plot(x, y, '.')
    9. plt.plot(x, y_pre)
    10. plt.show()

  • 相关阅读:
    【LeetCode贪心#09】用最少数量的箭引爆气球,无重叠区间,合并区间(涉及区间重叠情况判断与处理)
    ubuntu18.04 terminal打不开的解决方法
    transformer系列4---transformer结构计算量统计
    文件字符流
    推荐基于.NetCore一款高性能敏感词检测开源库
    【halcon】halcon 函数文件 以及 脚本引擎如何调用外部函数文件 上篇
    y124.第七章 服务网格与治理-Istio从入门到精通 -- Sidecar及流量拦截机制(十)
    java中类加载与双亲委派机制
    【JAVA数据结构系列】06_排序详解
    踩着节日的小尾巴
  • 原文地址:https://blog.csdn.net/cd_yourheart/article/details/127451446