【学习笔记】Python 语法

  • python 中的 tuple 并不支持单个赋值。

  • 判断一个元素是不是在 set 里面可以使用 in 实现:

    >>>A=set(['a','b','c','d'])
    >>>'a' in A
    False
    
  • python 中的 set 可以直接通过 & 实现求交,| 实现求并,- 求对称差(或者说从一个集合中移除另一个集合的元素)

try-except

try:
	# 执行一段可能存在错误的代码
	num=10/0
except ZeroDivisionError/ValueError: # 可能的错误类型
	print("除数不能为零")
else:
	# 如果没有错误会执行这部分
	print(f"{num}")
finally:
	# 无论是否报错,这部分代码都会执行
	

请注意,try-except语句只应用于你预期可能会出现异常的代码块,而不应滥用它。处理异常应该是程序设计的一部分,而不是隐藏错误的手段。--- ChatGPT

with

with 上下文管理器表达式 as 变量:
    # 在此缩进块中使用资源,代码块执行完成后资源会自动释放
    # ...

上下文管理器表达式 是一个实现了上下文管理协议的对象。这可以是一个内置对象(如文件对象)或自定义对象,只要它定义了 __enter__()__exit__() 方法即可。

变量 是一个用于在 with 代码块中引用资源的变量。

当进入 with 代码块时,会调用上下文管理器对象的 __enter__() 方法,该方法负责资源的分配和初始化。然后,当离开 with 代码块时,会调用上下文管理器对象的 __exit__() 方法,该方法负责资源的释放。

比如 with open('address','r') as file 在走出 with 语句的时候会自动将 address 目录下的文件执行 file.close()

import os

os 是 operating system 的缩写。它可以支持如下操作:

  • 文件和目录操作:

    创建目录:os.mkdir(path)
    创建多级目录:os.makedirs(path)
    删除目录:os.rmdir(path)
    递归删除目录及其内容:os.removedirs(path)
    删除文件:os.remove(path)
    重命名文件或目录:os.rename(src, dst)
    获取文件属性:os.stat(path)
    检查路径是否为目录:os.path.isdir(path)
    检查路径是否为文件:os.path.isfile(path)

  • 路径操作:

    合并路径:os.path.join(path1, path2, ...)
    拆分路径:os.path.split(path)
    获取文件名:os.path.basename(path)
    获取目录名:os.path.dirname(path)
    获取当前工作目录:os.getcwd()

  • 环境变量:

    获取系统环境变量:os.environ
    获取特定环境变量:os.environ.get('VAR_NAME')
    设置环境变量:os.environ['VAR_NAME'] = 'VALUE'

  • 系统命令执行:

    在 Python 脚本中执行系统命令:os.system(command)

广播

Python中的广播(broadcasting)是一种用于在不同形状的数组之间执行二进制操作的机制,使得它们的形状可以兼容,并且能够按照一定的规则进行元素级操作。这个机制允许你在不显式复制数据的情况下,对形状不同的数组进行操作,这可以节省内存和提高代码的效率。

广播的原理基于以下规则:

  • 如果两个数组的维度不同,将维度较小的数组进行扩展,使得它的维度与较大的数组相匹配。扩展时会在维度较小的数组的前面(左侧)添加新的维度,这些维度的大小为1。

  • 如果两个数组的维度相同,但某些维度的大小不同,将大小为1的维度扩展为匹配较大数组的大小。

  • 如果在某个维度上两个数组的大小都不相等且不为1,那么广播将无法执行,会引发错误。

广播的目的是使得两个数组在进行元素级操作时具有兼容的形状,这样可以将相应的元素一一对应起来进行操作,而不需要显式复制数据。

np.newaxis 可以帮助你在特定位置添加大小为 1 的维度。

如果要给一个训练集一个测试集求 L2 距离,不允许使用任何 for loop。它的写法是 dists=np.sqrt(np.sum((X[:,np.newaxis]-X_train)**2,axis=2))

原理就是先把原来大小为 [N,picture_size] 的图片添加维度变成 [N,1,picture_size] 。这下子来发广播,广播的时候大小为 [M,picture_size] 的 X_train 首先在左边添加一维,大小变成 [1,M,picturesize]

接下来根据广播的原理 [N,1],[1,M] 统一变成 [N,M],然后就可以对位操作了。完全无法深入理解如何广播,都说广播比 for loop 快,我不会广播只能写出来不能利用并行计算的废物代码了。

posted @   没学完四大礼包不改名  阅读(104)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示