PyTorch数组,张量,维度,切片

1 .切片:
切片:一维:[ start :end :step ]冒号。多维:[,]逗号分隔维度
切片是从外到内看维度

X = np.array(  [  [0,1,2] , [10,11,12] , [20,21,22] , [30,31,32]  ]  )
[0,1,2] , [10,11,12] , [20,21,22] , [30,31,32] 这是0维(去掉一个[]---大小:4
0,1,2     10,11,12    ...这是1维(去掉两个[]---大小:3

例子:

import numpy as np
X = np.array([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,32,33]])

print(X[1,0])  # 10

print(X[1:3,1:3]) # [ [11,12]
                      [21,22] ]
print(X[:2,:2])   # [ [0,1]
                      [10,11] ]
print(X[:,0])      # [ 0 10 20 30]
print(X[:,0:1])    # [ [0]            只有用冒号 表示出是个范围(即使实际上只包含一个)才能再用[ ] 包着
                     [10]
                     [20]
                     [30]  ]

2.numpy–shape函数用法
例如:矩阵a, 那么a.shape表示矩阵a的维度大小
a.shape[0]表示矩阵的行数,a.shape[1]表示矩阵的列数
建立一个数组b, 那么b.shape表示数组b的大小

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(a) 
print(a.shape) #(4,3)
print(a.shape[0])#4
print(a.shape[1])#3
#
[
  [1,2,3],[4,5,6],[7,8,9],[10,11,12]
]

3.Tensor
Tensor张量。虽然有时还是会说几行几列,其实,不用考虑“行列”的概念

a = torch.rand(1, 2, 2, 2)
print(a)
print(a.size())
------------------
tensor([[[[0.4160, 0.7013],
          [0.3883, 0.6756]],

         [[0.6303, 0.0144],
          [0.1027, 0.8542]]]])
torch.Size([1, 2, 2, 2])
  1. 维数组
    PyTorch中的各个数字从左往右分别对应由外到内的层次。(a,b,c,d)表示最外层数组包含a个元素(元素本身也是数组,只有到最内层才是普通的数),a个元素各自又包含b个子数组,b个子数组各自又包含c个子数组,c个子数组每个都包含d个元素。

下面对照着括号来看:

最外层的中括号:数组的象征,无论多少维的数组,最外面都有一层中括号,所以最外面的中括号本身并不包含任何维度信息。
第二层:在垂直方向上观察,只有一层,说明该维度长度为1(对应(a,b,c,d)中的a);
第三层:在垂直方向上观察,有两层,说明该维度长度为2(对应(a,b,c,d)中的b);
第四层:在垂直方向上观察,由于上一层是有两层的,所以pycharm的输出也非常贴心地分成了上下两块,我们只用看第一块即可,显然也是两层,说明该维度长度为2(对应(a,b,c,d)中的c);
第五层:也是最内层,随便选中一个中括号,里面是横着排列的,用逗号分隔的2个数,说明该维度长度为2(对应(a,b,c,d)中的d);
再举个例子:

a = torch.rand(2, 3, 4, 5)
print(a)
print(a.size())
-----------------------
tensor([[[[0.3689, 0.0515, 0.4698, 0.8608, 0.2939],
          [0.6328, 0.7154, 0.4514, 0.8239, 0.3587],
          [0.5970, 0.1604, 0.0033, 0.8885, 0.3629],
          [0.2186, 0.9431, 0.2264, 0.3357, 0.3118]],

         [[0.8402, 0.7487, 0.8137, 0.0692, 0.9861],
          [0.1275, 0.5480, 0.3803, 0.3801, 0.6754],
          [0.7389, 0.3532, 0.5560, 0.4056, 0.2368],
          [0.1113, 0.3072, 0.6570, 0.1285, 0.6331]],

         [[0.0912, 0.3514, 0.2731, 0.9596, 0.1936],
          [0.3107, 0.4428, 0.9672, 0.0778, 0.6484],
          [0.3629, 0.7911, 0.9783, 0.7051, 0.5235],
          [0.1730, 0.8745, 0.1580, 0.3193, 0.8202]]],


        [[[0.4327, 0.4810, 0.0056, 0.8400, 0.3263],
          [0.1467, 0.8376, 0.0766, 0.5909, 0.4188],
          [0.3555, 0.7011, 0.2004, 0.2605, 0.5205],
          [0.6036, 0.8388, 0.0610, 0.1489, 0.9452]],

         [[0.5051, 0.0161, 0.3363, 0.1939, 0.9949],
          [0.7931, 0.2976, 0.6276, 0.3221, 0.1810],
          [0.7623, 0.5226, 0.7116, 0.4818, 0.5510],
          [0.9556, 0.3049, 0.3479, 0.9650, 0.6561]],

         [[0.8363, 0.0121, 0.5926, 0.7543, 0.4924],
          [0.2830, 0.3250, 0.7983, 0.2548, 0.3496],
          [0.2930, 0.8676, 0.3479, 0.1776, 0.7081],
          [0.4618, 0.9499, 0.9068, 0.7570, 0.2282]]]])
torch.Size([2, 3, 4, 5])

维度:是看访问数据时的坐标个数。如果是二维的,访问时坐标是x,y,三维的。坐标是xyz。就是矩阵的维度。
通道:指的是每一个坐标元素所包含的数据的个数
例如一个3x 4 x 5的矩阵,dims = 3, channels = 12 的含义如下:
三维矩阵,每个矩阵元素拥有的值的个数为12。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值