【Python】知识点零碎学习1


列表

复制代码
nums=[1,2,3]

列表创建:

复制代码
res = [0] * (2 * n)  #创建长度为2n的列表

列表拼接:

复制代码
nums+nums#[1,2,3,1,2,3]

引用赋值:

复制代码
res = nums

resnums 指向同一个列表(不是复制新列表),修改一方会影响另一方,此时 res 的长度和 nums 完全一致


string.rsplit

string.rsplit(separator , max):从右侧开始将字符串拆分为列表

|-------------|---------------------------------|
| separator | 可选,分割字符串时要使用的分隔符,默认为空白。 |
| max | 可选,指定要执行的拆分数,默认值为 -1,即"所有出现次数"。 |

例:

复制代码
module, cls = string.rsplit(".", 1)#拆分为模块路径和类名

string = 'ldm.models.diffusion.ddpm.LatentDiffusion'

**运行结果:**module='ldm.models.diffusion.ddpm' cls='LatentDiffusion'


随机数生成

**torch.rand():**生成均匀分布的[0,1]之间的随机数,接收一个形状参数shape,返回指定形状的张量

复制代码
torch.rand((3,4))

**torch.randn:**生成标准正态分布的随机数,即均值为0,方差为1。接收一个形状参数shape,返回指定形状的张量。默认类型torch.float32。

torch.randint(low, high, shape): 生成指定范围内的随机整数,low是最小值,high是最大值。包括low,不包括high。在 PyTorch 全局默认数据类型为torch.float32的前提下,该函数返回的张量的数据类型仍为torch.int64

**torch.randperm(n):**生成从0到n-1的随机整数排列,每个整数只出现一次。接受一个参数n,返回一个长度为n的张量。


torch.stack(tensors,dim=0)

torch.stack(tensors,dim=0):在新的维度上对张量进行拼接。

tensors:需要连接的张量序列(python的序列数据只有list和tuple),序列内部分张量元素形状shape必须相等。连接后张量的维度会比输入张量高 1 维

复制代码
T1 = torch.tensor([[1, 2, 3],
        		[4, 5, 6],
        		[7, 8, 9]])
T2 = torch.tensor([[10, 20, 30],
        		[40, 50, 60],
        		[70, 80, 90]])
R0 = torch.stack((T1, T2), dim=0)
print("R0:\n", R0)
print("R0.shape:\n", R0.shape)
"""
R0:
 tensor([[[ 1,  2,  3],
         [ 4,  5,  6],
         [ 7,  8,  9]],

        [[10, 20, 30],
         [40, 50, 60],
         [70, 80, 90]]])
R0.shape:
 torch.Size([2, 3, 3])
"""

torch.argmax

**torch.argmax(input) → LongTensor:**返回输入tensor中最大值的索引。输入张量无论有几维,都先reshape为一位,然后返回这个一维向量中最大值的索引;如果有多个最大值,则返回第一个索引。

**torch.argmax(input, dim, keepdim=False)→ LongTensor:**返回其他所有维在dim这个维度上的索引,因此dim表示的维度会消失(就是变成1)

例:input是[a,b]维大小的张量,

若dim=0,返回的值是每一列的最大值在第几行,最后得到(1,b)的二维矩阵,所以行的维度消失了

若dim=1,返回的值是每一行的最大值在第几列,最后得到(a,1)的二维矩阵

复制代码
import torch
x = torch.randn(2,3,4)
y = torch.argmax(x,dim=0)#dim=0表示将dim=0这个维度大小由2压缩成1,然后找到dim=0这两个值中最大值的索引,这个索引表示dim=0维索引标号
x,x.shape,y,y.shape

输出结果如下:
(tensor([[[-1.4430,  0.0306, -1.0396,  0.1219],
          [ 0.1016,  0.0889,  0.8005,  0.3320],
          [-1.0518, -1.4526, -0.4586, -0.1474]],

         [[ 1.2274,  1.5806,  0.5444, -0.3088],
          [-0.8672,  0.3843,  1.2377,  2.1596],
          [ 0.0671,  0.0847,  0.5607, -0.7492]]]),
 torch.Size([2, 3, 4]),
 tensor([[1, 1, 1, 0],
         [0, 1, 1, 1],
         [1, 1, 1, 0]]),
 torch.Size([3, 4]))

numpy.intersect1d

numpy.intersect1d(arr1, arr2, assume_unique=False, return_indices=False ):查找两个数组的交集

默认返回一维数组,返回两个数组中重复的元素

若assume_unique=True,代表输入的两个数组是已经从小到大排好序且没有重复元素的数组;如果默认False,会自动对数组进行排序和去重然后再找交际

若return_indices=True,返回元组,返回元素在两个数组中的索引,(intersect, indices_ar1, indices_ar2)

复制代码
np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])		# array([1, 3])

seed_everything(1)

把各种随机数生成器的"种子(seed)"统一设为 1

在 PyTorch Lightning 里,seed_everything(1) 通常会:

  • random.seed(1):Python 自带 random

  • numpy.random.seed(1):NumPy 随机

  • torch.manual_seed(1):CPU 上的 torch 随机

  • torch.cuda.manual_seed_all(1):GPU 上的 torch 随机(如果有 CUDA)

相关推荐
骚戴3 分钟前
2025 Python AI 实战:零基础调用 LLM API 开发指南
人工智能·python·大模型·llm·api·ai gateway
元亓亓亓3 分钟前
LeetCode热题100--416. 分割等和子集--中等
算法·leetcode·职场和发展
BanyeBirth4 分钟前
C++差分数组(二维)
开发语言·c++·算法
kobe_OKOK_7 分钟前
tdeinge REST API 客户端
python·缓存·django
io_T_T22 分钟前
Python os库 os.walk使用(详细教程、带实践)
python
TonyLee0171 小时前
使用argparse模块以及shell脚本
python
Blossom.1182 小时前
Prompt工程与思维链优化实战:从零构建动态Few-Shot与CoT推理引擎
人工智能·分布式·python·智能手机·django·prompt·边缘计算
xu_yule2 小时前
算法基础(数论)—算法基本定理
c++·算法·算数基本定理
CoderCodingNo2 小时前
【GESP】C++五级真题(结构体排序考点) luogu-B3968 [GESP202403 五级] 成绩排序
开发语言·c++·算法
浅川.253 小时前
STL专项:stack 栈
数据结构·stl·stack