Python中的赋值操作有点类似于指针变量
def test():
a=[1,2,3]
b=a
b.clear()
print(“a”,a) [ ]
print(“b”,b) [ ]
将a指向[1,2,3]所在的内存地址处,b=a,及b也指向a所在内存地址,
b.clear() 将 [1,2,3]所在内存的地址里的数据擦除,所以a,b都为[]。
def test():
a=1
b=a
b=2
print(“a”,a) #1
print(“b”,b) #2
相当于把1的内存地址给1,b指向a的内存地址,b又改变了指向2的内存地址,所以输出为 1,2
def test():
c=[[4,5,6],[7,8,9],[10,11,12]]
d=copy.copy© #copy的时候只是保存了最外层的地址
print("cd",cd) #c,d是指向同一个地址的
d[0][0]=10
print(“c”,c) #c [[10, 5, 6], [7, 8, 9], [10, 11, 12]],指向指针的指针改变了值
print(“d”,d) #d [[10, 5, 6], [7, 8, 9], [10, 11, 12]]
d.clear()
print(“c”,c) #c [[10, 5, 6], [7, 8, 9], [10, 11, 12]]
print(“d”,d) #d [],清除了指向那个地址的指针
def gt_test():
x = torch.arange(5)
print(“x”,x) #x tensor([0, 1, 2, 3, 4])
mask = torch.gt(x, 1) #大于
print(“mask”,mask) #mask tensor([0, 0, 1, 1, 1], dtype=torch.uint8)
print(“x[mask]”,x[mask]) #x[mask] tensor([2, 3, 4])
print("x",x) #x tensor([0, 1, 2, 3, 4])
mask = torch.lt(x, 3)
print("mask",mask) #mask tensor([1, 1, 1, 0, 0], dtype=torch.uint8)
print("x[mask]",x[mask]) #x[mask] tensor([0, 1, 2])
print(x) #tensor([0, 1, 2, 3, 4])
mask = torch.eq(x, 3) # 等于
print(mask) #tensor([0, 0, 0, 1, 0]
print(x[mask]) #tensor([3])
def mean_data():
a=np.arange(0,24).reshape([2,3,4])
print(“a[:,0] size”,a[:, 0]) #[batch,embedding]
print(“a”,a)