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])
- 维数组
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。