Pytorch中二维张量切片

在列表切片中有三个参数:list[start:stop:step]

start-开始索引,stop-结束索引,step-步长

默认打“:”。默认值start为0,stop为最后,步长为1。若只有两个参数,则为start和stop,步长默认为1.

step小于0则为逆向切片:

Pytorch中二维张量切片_第1张图片

 一些例子(参考链接在后):

#list[起始索引,结束索引]切片时包含起始索引位置的元素,但不包含结束索引位置的元素
# 索引为 0表示第一个,1表示第二个,-1表示最后一个,-2表示倒数第二个

# list[-1]:返回最后一个数据
# list[:1]:返回0到1的数据,故返回第一个数据
# list[1:]:返回从1到0的数据,故返回第二个到最后一个的数据(不包含结束索引位置0)
# list[-1:]:返回从-1到0的数据,故返回最后一个数据
# list[:-1]:返回从0到-1的数据,故返回第一个到倒数第二个的数据(不包含结束索引位置-1)
# list[::1]:表示步长为1,步长大于0时,返回序列为原顺序;。
# list[::-1]: 表示从右往左以步长为1进行切片。步长小于0时,返回序列为倒序
# list[::2]: 表示从左往右步长为2进行切片

list = [1, 2, 3, 4, 5]
print(list[-1])  # 5
print(list[:1])  # [1]
print(list[1:])  # [2, 3, 4, 5]
print(list[-1:])  # [5]
print(list[:-1])  # [1, 2, 3, 4]
print(list[::1])  # [1, 2, 3, 4, 5]
print(list[::-1])  # [5, 4, 3, 2, 1]
print(list[::2])  # [1, 3, 5]

现在转换到二维的张量上:

Pytorch中二维张量切片_第2张图片

 和之前有所不同的是:将:改为,表示行列索引,不再是start和stop。如果还用冒号,列表里的元素就是一维的张量,也就是行张量。

举一些二维张量切片的例子和结果:

import torch
features = torch.arange(16).reshape(4, 4)
print(features)
'''tensor([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])'''
print(features[2]) # 取第二个’元素‘,0,1,2所以是第三行
# tensor([ 8,  9, 10, 11])
print(features[2::]) # 从第二个’元素‘开始,取出来第三行以后的所有行
'''tensor([[ 8,  9, 10, 11],
           [12, 13, 14, 15]])'''
print(features[::2]) # 切片,step=2
'''tensor([[ 0,  1,  2,  3],
           [ 8,  9, 10, 11]])'''
print(features[:,2]) # 取索引为2的列,也就是第三列
# tensor([ 2,  6, 10, 14])
print(features[2,:]) #相当于features[2]
# tensor([ 8,  9, 10, 11])
print(features[:2]) # 从头开始取到索引为2的行(不含),也就是前两行索引为0,1
'''tensor([[0, 1, 2, 3],
           [4, 5, 6, 7]])'''
print(features[2:]) # 从索引为2的行开始取到最后,也就是3,4行
'''tensor([[ 8,  9, 10, 11],
           [12, 13, 14, 15]])'''
print(features[:,-1]) # 取索引为-1的列
# tensor([ 3,  7, 11, 15])
print(features[:,-2]) # 取索引为-2的列
# tensor([ 2,  6, 10, 14])
print(features[:-1]) # 从头取到索引为-1的行(不含),因此是前三行
'''tensor([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])'''
print(features[-1,:]) # 取最后一行,相当于features[-1]
# tensor([12, 13, 14, 15])
print(features[2,2]) #取行索引,列索引为2的元素
# tensor(10)
# print(features[::-1]) # 报错

有关列表切片,文章参考:Python-列表切片list[-1]、list[-1:]、list[:-1]、list[::1]、list[::-1]的区别_zkw_1998的博客-CSDN博客_list[-1]https://blog.csdn.net/zkw_1998/article/details/119345010?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-5-119345010-blog-104673059.pc_relevant_default&spm=1001.2101.3001.4242.4&utm_relevant_index=7

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