在看代码的时候发现了很多[:-1]或者其他[ ]的用法,打算搜一搜总结一下,自用
切片
切片是从序列(如列表、元组或张量)中提取部分元素的一种方式。
基本语法是[start : stop : step]
start : 起始索引,包含在切片结果中
stop : 结束索引,不包含再切片结果中。所以切片是一个左闭右开的区间
step : 步长,表示每次取元素的间隔
例如:
x.shape[:-1]中的[:-1]是一个切片操作:表示从头到尾遍历(除了最后一个元素)。
-1表示最后一个元素的索引。
所以,x.shape[:-1]表示从x.shape中获取从头到倒数第二个元素的所有元素。
x = [1, 2, 3, 4, 5]
print(x[:-1]) # 输出 [1, 2, 3, 4]
x[-3:] # 最后三个元素
另一个切片的用法:x[..., None, :]
x = torch.randn(2, 3) # 假设 x 是形状为 (2, 3) 的张量
print(x.shape) # 输出 torch.Size([2, 3])
x_expanded = x[..., None, :]
print(x_expanded.shape) # 输出 torch.Size([2, 1, 3])
None
:在这里添加一个新的维度
列表
方括号可以创建列表
my_list = [1, 2, 3, 4, 5]
多维数组和张量
import numpy as np
# 创建一个2x2的数组
arr = np.array([[1, 2], [3, 4]])
# 访问特定元素
print(arr[0, 1]) # 输出 2
print(arr[:, 0]) # 输出 [1 3] (访问所有行的第一个元素)
[:, 0]:这是一个切片操作,其中包含两个部分:::冒号表示所有行,即从第0行到最后一行。
0:表示第0列。