PyTorch_张量索引操作

简单行,列索引操作

python 复制代码
import torch 
import numpy as np 

# 简单行列索引
def test01():
    data = torch.randint(0, 10, [4, 5])
    print(data)

    # 获得指定的某行元素
    print(data[0])

    # 获得指定某个列的元素
    print(data[:, 0])  # 逗号前面表示行,逗号后面表示列。冒号表示所有行或者所有列

    # 获得指定位置的某个元素
    print(data[1, 2])

    # 表示先获得前三行,再获得第三列的数据
    print(data[:3, 2])

    # 表示获得前三行的前两列
    print(data[:3, :2])

# 列表索引
def test02():
    data = torch.randint(0, 10, [4, 5])
    print(data)

    # 如果索引的行列都是一个一维的列表,那么两个列表的长度必须相等
    # 表示获得 (0, 0), (2, 1), (3, 2) 三个位置的元素
    print(data[[0, 2, 3], [0, 1, 2]])

    # 表示获得 0, 2, 3 行的 0, 1, 2 列
    print(data[[[0], [2], [3]], [0, 1, 2]])


if __name__ == "__main__":
    test02() 

布尔索引

python 复制代码
import torch 
import numpy as np 

# 布尔索引
def test01():
    torch.manual_seed(0)
    data = torch.randint(0, 10, [4, 5])
    print(data)

    # 能够获得该张量中所有大于3的元素
    # 张量可以与数字做比较
    print(data > 3)
    print(data[data > 3])

    # 返回第2列元素大于6的行
    print(data[data[:, 1] > 6])

    # 返回第2行元素大于3的所有列
    print(data[:, data[1] > 3])


# 多维索引
def test02():
    torch.manual_seed(0)
    data = torch.randint(0, 10, [3, 4, 5])
    print(data)

    # 选择第0行的所有元素
    print(data[0, :, :])

    # 按照第1哥维度选择第0元素, 是按行
    print(data[:, 0, :])

    # 按照第2个维度选择第0元素, 是按列
    print(data[:, :, 0])

if __name__ == "__main__":
    test02() 
相关推荐
m0_7156744311 分钟前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
大数据·网络·人工智能·安全·网络安全·政务
羲云网络23 分钟前
AI API 门户上线不难,难的是让用户完成第一次调用
人工智能·产品运营·api·开发者·acedatacloud
视觉小萌新39 分钟前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
Zhao-Jichao1 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
阿里云大数据AI技术1 小时前
EMR Serverless StarRocks 全面支持 Paimon 2.0:构建多模态统一分析与检索
人工智能
电科_银尘1 小时前
【深度学习项目实战·11】损失函数与评价指标:让模型输出、标签与结果真正对应
人工智能·深度学习
RanceGru1 小时前
AI嵌入式7——瑞芯微RK3588s+RK1828 NPU 部署VLM模型(Qwen3-VL-2B)
人工智能
阿里云大数据AI技术1 小时前
云栖实录 | 具身智能前沿对话
人工智能
imythu2 小时前
让 Claude Code 在家跑,我在外面用手机盯着:做一个开源工具踩过的几个坑
人工智能·github
小小张说故事2 小时前
Python 的 obj.x 到底按什么顺序找?拆开数据描述符、实例字典和 __getattr__ 那条优先级链
python