python记录

note:

  1. 内容是在本地进行编辑后复制到博客的,而更新主要是在本地,隔一段时间会复制过来。复制后图片无法显示,需要一张一张复制才行。懒。如果有需要看图片,可以评论或私聊,我看到消息后会上传对应图片。
  2. 内容较多,如果想看目录,在电脑端,可以向下滚动一部分,左侧会有一个目录。也可以使用ctrl + f搜索。

python语法

1. zip与enumerate

train_loader = data.DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True)
label_loader = data.DataLoader(dataset=train_labelset,batch_size=batch_size,shuffle=True)
for i, loader in enumerate(zip(train_loader, label_loader)):
        (trace, label) = loader

对比与互转

list array np.ndarray tensor

互转:

import numpy as np

list ndarray tensor pytorch dataloader
list array 和asarray都可以,区别是前者默认copy,后者相反
array = np.asarray(list)
array = np.asarray(list, dtype = int)
# 除int数据外全部忽略
np.ndarray https://blog.csdn.net/weixin_43883815/article/details/122797136
tensor
pytorch dataloader

2. list

初始化

1. 直接赋值
	n = [1,2,3,4]
2. 规律数字赋值
	list1 = [n for n in range(1,6)]		# [1, 2, 3, 4, 5]
3.值相同
	list2 = ['a' for n in range(4)]		# ['a', 'a', 'a', 'a']
	方法二
	list3 = ['b'] * 4		# ['b', 'b', 'b', 'b']
	list4 = [3] * 4			# [3, 3, 3, 3]

合并

https://www.php.cn/python-tutorials-419933.html

1.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加

2.extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加

3.+ 直接用+号看上去与用extend()一样的效果,但是实际上是生成了一个新的列表存这两个列表的和,只能用在两个列表相加上

4.+= 效果与extend()一样,向原列表追加一个新元素,在原有列表上增加

代码示例如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0LfmtUG-1688613895441)(./note.assets\1659086604251.png)]

查看列表维度

先把list转numpy,再使用shape属性

import numpy as np
list = [[1,2],
        [3,4],
        [5,6]]
dimen = np.array(list).shape
print(dimen)
#  (3, 2)

排序

1. 最简单的sort,默认升序
x=[8,9,0,7,4,5,1,2,3,6]
x.sort()
>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2.使用lambda表达式
L=[('b',2),('a',1),('c',3),('d',4)]
sorted(L, key=lambda x:x[1])
>>> L = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

3.使用函数
x=[8,9,0,7,4,5,1,2,3,6]
def size(a):
    x=10-int(a)
    return x
x.sort(key=size)
>>> x = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

更多用法详见

https://blog.csdn.net/qq_41500249/article/details/106244810

https://blog.csdn.net/qq_20831401/article/details/121663509

3. tensor

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPSzAXfA-1688613895446)(./note.assets\image-20220701173510902.png)]

https://blog.csdn.net/wohu1104/article/details/107283011

list tensor互转

  • list转tensor https://zhuanlan.zhihu.com/p/429901066
方法一:
l = [1,2,3]
t = torch.tensor(l)
其他方法见链接
  • tensor转list

    data = data.tolist()
    

4.ndarray

数据类型

u1、u4……

详见 https://www.numpy.org.cn/reference/arrays/dtypes.html#%E6%8C%87%E5%AE%9A%E5%92%8C%E6%9E%84%E9%80%A0%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ehjQqF0z-1688613895447)(.\note.assets\1660126410880.png)]

np.array

  • array 和 np.ndarray 的区别:

    array 是一个函数,创造类型为 ndarray 的矩阵对象

  • 先看转之前的元素类型,保证转成array之后数据不会被改变。 错误情况如 https://blog.csdn.net/good18Levin/article/details/121285416

  • 和 np.asarray()的区别
    np.array (默认情况下)将会copy该对象,而 np.asarray 除非必要,否则不会copy该对象

  • ndarray 转 pytorch dataloader https://blog.csdn.net/weixin_43883815/article/details/122797136

合并

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mfec7vyQ-1688613895448)(./note.assets/image-20220712174911269.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4hVg7IlH-1688613895449)(./note.assets/image-20220712175308517.png)]

axis

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
np.sum(a, axis=0)
 
# 结果
# array([5, 7, 9])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1F8rTZO-1688613895451)(D:\compilers\language\python.assets\1688009666035.png)]

1.print输出不带换行

print(context, end="")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k2inJtCA-1688613895452)(D:\compilers\language\python.assets\1612946030865.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8aZEisa-1688613895453)(D:\compilers\language\python.assets\1612946039570.png)]

2.字符串函数

https://www.runoob.com/python3/python3-string.html

  • 替换

    需要新建变量保存修改后的内容[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lH0LXgov-1688613895454)(D:\compilers\language\python.assets\1612949417624.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BF4KvWGC-1688613895455)(D:\compilers\language\python.assets\1612949422975.png)]

  • 包含 :if 'sdfkj' in strName

3.读写文件

一般方法

open(),close()

参数说明:https://blog.csdn.net/weixin_39556474/article/details/110566622

  • 参数Mode的基本取值

    r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;

    b、t、+、U这四个字符,与以上的文件打开模式组合使用

    二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WN7f9iDE-1688613895456)(D:\compilers\language\python.assets\1612946403093.png)]

csv文件

第一种,见另一个md
第二种:
# 如果没有安装pandas,只需取消对以下行的注释来安装pandas
# !pip install pandas
import pandas as pd

data = pd.read_csv("data_file_path")
print(data)

note

readline(): 函数运行后,对该文件的指针会移动到文件尾部,所以如果还想再读,需要移动文件指针

输出到文件

1. 方法同写文件
file = open("./test.txt","w")
content = 'www.xilhkjghfgddfeniao.com'
file.write(content)
file.close()

2. help函数输出到文件
import reed_solomon_ccsds	# reed_solomon_ccsds为想看的库,需更改
import sys
file = open("./test.txt","w+")
stdout = sys.stdout
sys.stdout = file

help(reed_solomon_ccsds)	# 同上

file.flush()
file.close()
sys.stdout = stdout

4.数据操作

function illustration else
reshape 地址不变 b=a.reshape((3,4)) 改变b或a,另一个的值也会随之改变
view view 和 reshape没有本质区别
.shape 查看维数
type()
bin (n).count (“1”) 计算汉明重量 汉明重量:二进制中1的个数

5.其它

参数

源自 https://blog.csdn.net/weixin_39583029/article/details/110684070,由于代码部分较难辨别,故于此处修改,文字部分复制,代码部分修改格式以便阅读

  • 在设置默认参数时,默认参数必须指向不变对象。

    如果是可变对象,比如list,举例如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baLuRwKt-1688613895457)(.\note.assets\1660122937944.png)]

四、非关键字可变长参数

非关键字可变长参数用 *变量名 来表示,定义函数时,一般用 *args 来表示。主要用来处理一些不能确定有多少个参数的问题。

函数将多余的不带关键字的参数打包成为一个元组,进行处理。*args后面的参数必须使用关键字,不然全都会被当成可变长参数,被打包到元组中。

但是,*args与默认参数之间顺序的问题也需要注意。

def s(x,y=233,*args):
    print('x =',x)
    print('y =',y)
    for index,i in enumerate(args):
        print('args[%s] = %s'%(index,i))
    print(type(args))
s(1,2,3,4,5)

输出:

x = 1
y = 2
args[0] = 3
args[1] = 4
args[2] = 5

可以看到,该函数第一个值赋给位置参数,第二个值赋给默认参数,后面的值全都打包成为一个元组,通过for循环来显示。只要传递的参数传递的参数大于两个,就会自动给默认参数赋值,此时默认参数基本上失去了默认的意义。

也可以将默认参数放在*args的后面,但是此时给默认参数赋值时,需要加上关键字,不然就会被打包为元组,赋值给args。

def s(x,*args,y=233):
    print('x =',x)
    print('y =',y)
    for index,i in enumerate(args):
        print('args[%s] = %s'%(index,i))
print(s(1,2,3,4,5))
print(s(1,2,3,4,y=5))

输出:

x = 1				x = 1
y = 233				y = 5
args[0] = 2			args[0] = 2
args[1] = 3			args[1] = 3
args[2] = 4			args[2] = 4
args[3] = 5			None
None

列表或元组可以以作为参数传入*args,如果不想被二次打包,需要在列表或者元组前面加 * 。

def s(x,*args,y=233):
    print('x =',x)
    print('y =',y)
    for index,i in enumerate(args):
        print('args[%s] = %s'%(index,i))
s(1,2,*[4,5,6])

输出:

x = 1
y = 233
args[0] = 2
args[1] = 4
args[2] = 5
args[3] = 6

五、可变长的关键字参数

可变长关键字参数用 **变量名 来表示,定义函数时,一般用 **kwargs 来表示。主要用来处理一些不能确定有多少个关键字参数的问题。

函数将多余的带关键字的参数打包成为一个字典,关键字为字典的key,进行处理。**kwargs必须是放在函数形参的最后。

def s(x,*args,y=233,**kwargs):
    print('x =',x)
    print('y =',y)
    for index,i in enumerate(args):
        print('args[%s] = %s'%(index,i))
    for i in kwargs:
        print(i,' ',kwargs[i])
    print('kwargs type is',type(kwargs))
s(1,2,a=3,b=4)

输出结果:

x = 1
y = 233
args[0] = 2
a   3
b   4
kwargs type is 

同样,字典也可以作为参数传入**kwargs,需要在字典前加 **

可以对比下列代码的执行结果:

def s(x,*args,y=233,**kwargs):
    print('x =',x)
    print('y =',y)
    for index,i in enumerate(args):
        print('args[%s] = %s'%(index,i))
        for i in kwargs:
            print(i,' ',kwargs[i])
s(1,2,{'a':5})
s(1,2,a={'a':5})
s(1,2,**{'a':5})

输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PqLa6Tsb-1688613895457)(.\note.assets\1660125423431.png)]

pytorch 保存读取tensor

import torch
save_torch = torch.Tensor([[1, 2, 3, 4],
                           [2, 34, 5, 6]])
print(save_torch)
torch.save(save_torch, 'test_save_tensor.pt') # 保存
load_torch = torch.load('test_save_tensor.pt') # 读取
print(load_torch)

读取文件夹,获取其包含的文件名[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qs9Ebs6E-1688613895458)(./python.assets/image-20220623153944692.png)]

matplotlib绘制可交互图

https://blog.csdn.net/weixin_42642296/article/details/115861092

安装qt5,不安装会报错 ImportError: Failed to import any qt binding
pip install PyQt5
pip install PyQt5-tools //这个看情况,不下也能用的话就不下
在代码中加入一行%matplotlib qt5

import matplotlib.pyplot as plt
import numpy as np
%matplotlib qt5
a = np.random.randn(2,3)
plt.plot(a)
plt.show()


结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wIrdGRUr-1688613895459)(./python.assets/image-20220627180134926.png)]

vsCode官方文档

Integrated Terminal in Visual Studio Code

给PDF添加目录书签

必备软件: PdgCntEditor 下载地址: https://www.jianshu.com/p/9683e7094871

有了会更好的: 编写python的软件

操作步骤先跟这个网站:https://www.jianshu.com/p/9683e7094871

需要注意的一点是,如果没有获取到书签源数据,可以用文字识别技术,比如QQ的截图-文字识别,来获取,只不过需要自己进行手动修正。

上述网站步骤操作结束后,需要进行如下步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0VYtJBYu-1688613895460)(D:/compilers/language/note.assets/1659086464625.png)]

保存后关闭该程序,打开pdf,即可看到生成的目录书签。

github 下载部分文件夹

下载命令为:git clone url

下载部分文件夹时,将url中的分支替换成trunk。例如:

https:// github. com/shanfl/collectcode/tree/3b09c/jpeg(链接加了左右空格,防止智能识别链接。下同)

将”/tree/3b09c/”替换成”/trunk/”,则新生成的新链接为:https:// github .com/shanfl/collectcode/trunk/jpeg

注意:这里根据分支的不同,通用的办法是将”/branches/branchname/”替换成”/trunk/”。例如:”/tree/master/” to “/trunk/” ; “/tree/develop/” to “trunck”

详见 https://blog.csdn.net/qq_35860352/article/details/80313078

查看函数源码

https://blog.csdn.net/wjx19960817/article/details/113740694

文档中第一点的补充:CTRL + 鼠标左键点进去之后如果类似下图,可以继续使用CTRL + 鼠标左键点进去[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNvV3G45-1688613895461)(D:\compilers\language\python.assets\1688132304986.png)]

https://www.python100.com/html/HT0B3Z47O82J.html

yield 关键字 https://blog.csdn.net/mieleizhi0522/article/details/82142856/

环境

1.pip

pip show 库名(如opencv-python) 查看安装的库的版本
python -m ensurepip 查看pip版本
pip list 查看安装的各种与python有关的包的版本
python -m pip install --upgrade pip 更新pip

使用pip命令时提示没有pip模块可使用如下命令
  2.1 python - m ensurepip   查看pip版本
  2.2 python -m pip install --upgrade pip --force-reinstall(使用时无效,故仅作参考)
  
pip install 包名==版本号
//例如
pip install cmake==1.5

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2IU3WLI-1688613895461)(D:\compilers\language\python.assets\1655086799518.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qW1a8QGF-1688613895462)(D:\compilers\language\python.assets\1655087209204.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wuIpLmRD-1688613895463)(D:\compilers\language\python.assets\1655087339872.png)]

2.pytorch

用pycharm安装

  • pytorch其实就是torch,安装torch就行,代码中也用import torch
  • pycharm terminal界面 pip install torch
  • pycharm中的pytorch库版本太旧,建议还是去pytorch官网https://pytorch.org/mobile/home/看看安装教程。然后在pycharm的终端中安装
  • file - settings - project:pycharm - python interperter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXPgdvcE-1688613895464)(D:\compilers\language\python.assets\1655087593020.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ziomifKF-1688613895464)(D:\compilers\language\python.assets\1655087720936.png)]

若失败,可尝试打开cmd自己输入代码运行

Leetcode

1.“ListNode” is not defined

leetcode自定义类型,其定义可仿照下面链接进行自定义。

https://leetcode.cn/circle/article/s3RcOW/

https://blog.csdn.net/lesliezc/article/details/119189966

你可能感兴趣的:(python,C,Linux,python,开发语言)