pytorch_numpy高维数组

本文探讨了Python、NumPy和PyTorch中多维数组的操作,重点介绍了tensor、ndarray和list的区别。内容包括:1) tensor、ndarray和list在数据结构和用途上的差异,特别是tensor在GPU计算中的优势;2) NumPy高维数组的切片和省略号用法;3) axis轴的索引;4) 二维数组取元素的方法。文章还通过实例分析了高维数组索引的行为,并提供了相关资源链接供深入学习。
摘要由CSDN通过智能技术生成

可以参照其他两篇博客:
pytorch_tensor
python基础之一_集合数据类型

一 python、numpy、pytorch中多维数组操作

总结:

  1. python中无法直接对多维数组切片;numpy、pytorch可以;
  2. numpy、pytorch中数组切片操作相同;

1.1 tensor、ndarray、list的区别

tensor、ndarray、list的什么区别,为什要有这么多类似的结构?

  1. list是python中的数据结构,ndarray是numpy包中的数据结构,tensor是torch包中的数据结构
    list表示集合(容器)、ndarray表示矩阵、tensor表示张量;
  2. ndarray和tensor区别不大,tensor可以看做是ndarray的改进版,专门为了使用GPU加速计算。tensor可用GPU加速,ndarray不能。其他的API类似,总得来说都是为了表示矩阵,ndarray是只能在CPU上运算的矩阵,tensor是在CPU、GPU上都能运算的矩阵。
    与此特性相对应,tensor主要是为了在需要GPU计算的场合使用,也就是模型要训练的参数。而ndarray则是在与除此之外的场合使用,例如:数据预处理。
    那能够用tensor代替ndarray吗?至少在自己写的代码中是可以的,tensor可以当做ndarray使用。但是,很多与数据处理相关的第三方包返回的都是ndarray。另外,感觉ndarray对比tensor是一种更基本的数据结构,除了深度学习以外还有很多其他科学计算任务中,在这些任务中显然也需要矩阵,他们里面应该都是使用的ndarray。
  3. ndarry和list区别很大,ndarray是数学中矩阵在python中的表示,因此严格符合矩阵的各种约束,而list只是表示一个容器,其结构宽松得多。例如,矩阵形状肯定是符合 X*Y这种格式的,因此各分量长度自然相等,而且各分量类型自然相同。list中就没有这种要求,list的各分量类型和长度都可以不同,list自然也没有shape这种概念。
    二者的类似之处,只在于有相同的访问方式,都能通过下标访问。
    另外,ndarray既然表示一个矩阵,也就要求形状是固定的,且是一开始就定好的。

1.2 实现

ls1=[[1,2,3],[4,5,6]]
ls2=np.array(ls)
ls3=torch.tensor(ls2)
输出1---------------------
print(ls[:,2])
print(ls2[:,2])
print(ls3[:,2])
输出2---------------------
print(ls1[...])
print(ls2[.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值