【Pytorch】numpy数组与tensor互相转换的多种方法

本文介绍了如何在Python中将numpy数组转换为torch tensor,并比较了不同方法(as_tensor, from_numpy, tensor, Tensor)的特性,包括数据类型和内存共享。同样,也讲述了torch tensor转numpy array的过程。
摘要由CSDN通过智能技术生成
一、numpy数组转化为torch中的tensor:

总的来说有四种方法,如下:

import torch
import numpy as np

arr1 = np.array([1,2,3], dtype=np.float32)
arr2 = np.array([4,5,6])
print(arr1.dtype)
print("nunpy中array的默认数据类型为:", arr2.dtype)

tensor = torch.tensor(arr2)
Tensor = torch.Tensor(arr2)
as_tensor = torch.as_tensor(arr2)
from_numpy = torch.from_numpy(arr2)

print(tensor.dtype, "|",Tensor.dtype, "|",as_tensor.dtype, "|",from_numpy.dtype)
arr2[0] = 10
print(tensor, Tensor, as_tensor, from_numpy)
'''
结果为:
float32
numpy中array的默认数据类型为: int64
torch.int64 | torch.float32 | torch.int64 | torch.int64
tensor([4, 5, 6]) tensor([4., 5., 6.]) tensor([10,  5,  6]) tensor([10,  5,  6])
'''

上述中可以看出来:

  1. numpy中array默认的数据格式是int64类型,而torch中tensor默认的数据格式是float32类型
  2. as_tensor和from_numpy是浅拷贝,而tensor和Tensor则是属于深拷贝,浅拷贝是直接共享内存内存空间的,这样效率更高,而深拷贝是直接创建一个新的副本。
二、torch中的tensor转化为numpy数组:
import torch
import numpy as np
a = torch.ones(5)
b = a.numpy()
b[0] = 2
 
print(a)
print(b)
'''
tensor([2., 1., 1., 1., 1.])
[2. 1. 1. 1. 1.]
'''

从上述的结果看来这个numpy() 方法将tensor转numpy的array也是内存共享的。

  • 31
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值