numpy支持比python更多的数据类型_Numpy/Pytorch之数据类型与强制转换

1.数据类型简介

Numpy

NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。

Pytorch

Torch定义了七种CPU张量类型和八种GPU张量类型,这里我们就只讲解一下CPU中的,其实GPU中只是中间加一个cuda即可,如torch.cuda.FloatTensor:

torch.FloatTensor(2,3) 构建一个2*3 Float类型的张量

torch.DoubleTensor(2,3) 构建一个2*3 Double类型的张量

torch.ByteTensor(2,3) 构建一个2*3 Byte类型的张量

torch.CharTensor(2,3) 构建一个2*3 Char类型的张量

torch.ShortTensor(2,3) 构建一个2*3 Short类型的张量

torch.IntTensor(2,3) 构建一个2*3 Int类型的张量

torch.LongTensor(2,3) 构建一个2*3 Long类型的张量

同样,直接使用类型名很可能会报错,正确的使用方式是torch.调用,eg,torch.FloatTensor()

2.Python的type()函数

type函数可以由变量调用,或者把变量作为参数传入。

返回的是该变量的类型,而非数据类型。

data = np.random.randint(0, 255, 300)print(type(data))#

3.Numpy/Pytorch的dtype属性

返回值为变量的数据类型

t_out = torch.Tensor(1,2,3)print(t_out.dtype)#torch.float32

t_out= torch.Tensor(1,2,3)print(t_out.numpy().dtype)#float32

4.Numpy中的类型转换

n_out =n_out.astype(np.uint8)#由变量调用,但是直接调用不会改变原变量的数据类型,是返回值是改变类型后的新变量,所以要赋值回去。

#初始化随机数种子

np.random.seed(0)

data= np.random.randint(0, 255, 300)print(data.dtype)

n_out= data.reshape(10,10,3)#强制类型转换

n_out =n_out.astype(np.uint8)print(n_out.dtype)

img=transforms.ToPILImage()(n_out)

img.show()

Pytorch中的类型转换

pytorch中没有astype函数,正确的转换方法是

1.变量直接调用类型

tensor = torch.Tensor(3, 5)#torch.long() 将tensor投射为long类型

newtensor =tensor.long()#torch.half()将tensor投射为半精度浮点类型

newtensor =tensor.half()#torch.int()将该tensor投射为int类型

newtensor =tensor.int()#torch.double()将该tensor投射为double类型

newtensor =tensor.double()#torch.float()将该tensor投射为float类型

newtensor =tensor.float()#torch.char()将该tensor投射为char类型

newtensor =tensor.char()#torch.byte()将该tensor投射为byte类型

newtensor =tensor.byte()#torch.short()将该tensor投射为short类型

newtensor =tensor.short()#同样,和numpy中的astype函数一样,是返回值才是改变类型后的结果,调用的变量类型不变

2.变量直接调用pytorch中的type函数

type(new_type=None, async=False)如果未提供new_type,则返回类型,否则将此对象转换为指定的类型。 如果已经是正确的类型,则不会执行且返回原对象。

用法如下:

t = torch.LongTensor(3, 5)

t= t.type(torch.FloatTensor)

3.变量调用pytorch中的type_as函数

如果张量已经是正确的类型,则不会执行操作。具体操作方法如下:

t = torch.Tensor(3,5)

tensor= torch.IntTensor(2, 3)

t= t.type_as(tensor)

——————————

版权声明:本文为CSDN博主「啧啧啧biubiu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_37385726/article/details/81774150

原文:https://www.cnblogs.com/ziwh666/p/12399075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值