数据维度的增加和删除

博客介绍了彩色和灰度图像在numpy中的存储形式,以及因需求对其数据维度进行增删的情况。详细阐述了NumPy中数据维度增加和删除的方法,还介绍了PyTorch中实现数据维度增删的函数,包括不同参数对应行、列方向的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

彩色图像在numpy中以(h,w,c)的形式存储,而灰度图像则以(h,w)的形式存储,有时为了需求需要为其增加一个值为1的维度,成为(h,w,1),或者将(h,w,1)转换为(h,w)需要减少一个值。

NumPy中数据维度的增加和删除

  • 增加一个值为1的维度
    img = cv2.imread('D:\\code\\test_python\\img.jpg', cv2.IMREAD_UNCHANGED)
    print (img.shape)
    alpha = cv2.imread('D:\\code\\test_python\\alpha.jpg', cv2.IMREAD_GRAYSCALE)
    print (alpha.shape)
    
    #add dimension method1
    mask_add1 = np.expand_dims(alpha, 2)
    print (mask_add1.shape)
    
    #add dimension method2
    mask_add2 = alpha[:, :, np.newaxis]
    print (mask_add2.shape)
    
    #add dimension method3
    mask_add3 = np.reshape(alpha, (alpha.shape[0], alpha.shape[1], 1))
    print (mask_add3.shape)
  • 删除一个值为1的维度
    #sum dimension method1
    mask_sub1 = np.squeeze(mask_add1)
    print (mask_sub1.shape)
    
    #sum dimension method2
    mask_sub2 = np.reshape(mask_add2, (mask_add2.shape[0], mask_add2.shape[1]))
    print (mask_sub2.shape)

PyTorch中对数据维度进行增加删除的方法

torch.squeeze()torch.unsqueenze()函数可以实现数据维度的增加和删除。

  • torch.unsqueeze()数据维度的增加,第二个参数为0数据为行方向增加,为1为列方向维度增加。
a = torch.tensor([1, 2, 3])
b = a.unsqueeze(0)
c = a.unsqueeze(1)
d = a.unsqueeze(-1)

在这里插入图片描述

  • torch.squeenze()数据维度的减少,第二个参数为0数据为行方向减少,为1为列方向维度减少。
e = b.squeeze(0)
f = c.squeeze(1)
g = d.squeeze(-1)

在这里插入图片描述

参考资料

  1. Numpy , Tensor , Variable 增删一个值为1的维度
  2. Python numpy为数组增加一个新维度–np.newaxis和np.expand_dims
  3. Numpy库学习—squeeze()函数
  4. pytorch学习之—squeeze()和unsqueeze()函数功能及使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值