当前位置: 首页 > news >正文

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

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

目录

前言

文件读写

遍历文件夹/文件

生成随机颜色

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

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

生成随机数/随机矩阵

关于python中函数形参的问题

plt画图

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

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


前言

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

开始

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

文件读写

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

遍历文件夹/文件

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

 判断文件/路径是否存在

if os.path.exists(path):

生成随机颜色

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

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

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

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

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

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

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

 

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

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

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

img = np.zeros((300, 400, 3), np.uint8)
# 浅灰色背景
img.fill(200) # 这是对三个通道全部填充固定数值
cv2.imshow('img', img)
cv2.waitKey(0)

# 我曾这样尝试对每个通道填充不同的数值
# img.fill((255,0,0)),但是失败

 

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

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

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

 

生成随机数/随机矩阵

# 生成3*100的随机矩阵,随机值0-1之间
a=np.random.random(size=(3,100))

# 生成随机值0-100之间
a=np.random.random(size=(3,100))*100

# 生成1-10之间的随机整数
a=np.random.randint(1,10,size=(3,100))

关于python中函数形参的问题

参考这个写的

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

plt画图

==>最简单的情况

a=np.random.random(size=(3,100))*10 # 生成的随机值在0-10之间
plt.figure()
# a[0,:]是个行向量,也可以是列向量
plt.plot(a[:, 0]) # 最简单的情况,没有其他参数
plt.axis('equal')
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轴刻度不一致,就相当于是放大拉伸局部,可以观察的更清楚。

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

 ==>沿XY轴翻转镜像

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

==>保存画的图像

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

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

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

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

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

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

file = "nameyoulike.txt"
a = np.loadtxt(file)
print(a)
b=np.delete(a,1,0)
print(b)

# delete中的第三个参数表示数组的维度,表示删除第几维的数据
# 第二个参数表示要删除维度下的序号
# 比如delete(a,1,0),第三个参数0表示删除行,第二个参数1表示删除第1行
# 再比如delete(a,3,1),第三个参数1表示删除列,第二个参数3表示删除第3列

 

相关文章:

  • 什么样的人适合学习网络安全?
  • python作业8
  • 【css伪类选择器及透明度——附项目图片及代码】
  • Hadoop 3.x(生产调优手册)----【HDFS--存储优化】
  • SpringBoot项目的发布与运行
  • 基于Hi3861的听话的狗子
  • 【组件】Vue组件之间的通信父传子 | 子传父
  • 万字爽文一篇带你掌握Java8新特性Stream流
  • libusb系列-005-部分API简介
  • 深度学习提高模型准确率方法
  • [LeetCode刷题笔记]1 - 两数之和(哈希表)
  • HTML 学习总结
  • 网络安全:技术趋势
  • 现在都这么狂吗?面试了一个工作4年的测试工程师,一问连自动化基础都不清楚,还反过来怼我....
  • c++内存管理:
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android 架构优化~MVP 架构改造
  • ECMAScript6(0):ES6简明参考手册
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • markdown编辑器简评
  • mysql_config not found
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • python大佬养成计划----difflib模块
  • Service Worker
  • 番外篇1:在Windows环境下安装JDK
  • 让你的分享飞起来——极光推出社会化分享组件
  • 为视图添加丝滑的水波纹
  • 一起参Ember.js讨论、问答社区。
  • 自定义函数
  • # include “ “ 和 # include < >两者的区别
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #pragma 指令
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (07)Hive——窗口函数详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (黑马C++)L06 重载与继承
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原)Matlab的svmtrain和svmclassify
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .libPaths()设置包加载目录
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 简单实现MD5
  • .Net环境下的缓存技术介绍
  • .NET下的多线程编程—1-线程机制概述
  • /proc/stat文件详解(翻译)
  • @31省区市高考时间表来了,祝考试成功
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)