1、tensor复制扩充(扩充维度+复制),例如从[1]变成 [[1], [1], [1] ...]
我是用在测试的时候,使用预测结果与全部特征嵌入进行计算时,将目标特征嵌入扩充维度并复制batch_size 份(参考 记录一个Tensor操作——扩充维度+复制 - 知乎 (zhihu.com))
# 原始tensor x
x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
'''
torch.Size([2, 3])
tensor([[1., 2., 3.],
[4., 5., 6.]])
'''
# 在dim=0的位置,扩充一维,无填充,注意结果中中括号的数量
t = x.unsqueeze(0)
'''
torch.Size([1, 2, 3])
tensor([[[1., 2., 3.],
[4., 5., 6.]]])
'''
# 把第0维(也就是刚扩充的无填充的那一维)复制4份,其余维度复制1份(相当于无操作)
# 注意:repeat函数参数的数量必须和dim数量保持一致,即在此处必须填(4,1,1)而不能填(4),这也是为什么后两维需要填1
y = t.repeat(4, 1, 1)
'''
torch.Size([4, 2, 3])
tensor([[[1., 2., 3.],
[4., 5., 6.]],
[[1., 2., 3.],
[4., 5., 6.]],
[[1., 2., 3.],
[4., 5., 6.]],
[[1., 2., 3.],
[4., 5., 6.]]])
'''
2、ndarray多个维度同时插入,元素添加操作,用在计算预测结果的时候(这个真的,我为难了好久,结果发现可以直接插入,哭😭)(参考 (1条消息) Python笔记:操作ndarray元素:访问、删除、插入_Johnny丶me的博客-CSDN博客_ndarray 插入)
x = np.array([1, 2, 3, 4, 5])
Y = np.array([[1,2,3],[4,5,6]])
print()
print('Original x = ', x)
x = np.append(x, 6) # 秩为1的ndarray,直接append
print()
print('x = ', x)
x = np.append(x, [7,8]) # 秩为1的ndarray,也可通过列表一次添加多个
print()
print('x = ', x)
print()
print('Original Y = \n', Y)
v = np.append(Y, [[7,8,9]], axis=0) # 秩为2的ndarray,添加一行
q = np.append(Y,[[9],[10]], axis=1) # 秩为2的ndarray,添加一列; 当然也可添加两列 q = np.append(Y,[[9,99],[10,100]], axis=1)
print()
print('v = \n', v)
print()
print('q = \n', q)