文章目录
- 1. 张量转换为Numpy数组
- 2 . Numpy 数组转换为张量
- 3. 张量和数字转换
1. 张量转换为Numpy数组
使用Tensor.numpy()
函数可以将张量转换为ndarray数组,但是共享内存,可以使用copy()
函数避免共享
data = torch.tensor([2,3,4])
print('data的类型:',type(data))
# 将张量转换为 numpy 数组
numpy_data = data.numpy()
print('numpy_data的类型:',type(numpy_data))
# 使用copy方法拷贝对象,防止内存共享
numpy_data2 = data.numpy().copy()
print('numpy_data2的类型:',type(numpy_data2))
# 注意: data_tensor 和 data_numpy 共享内存,修改其中的一个,另外一个也会发生改变
#data[0]=100
numpy_data[0]=100
print('张量的值',data)
print('numpy的值:',numpy_data)
结果输出:
data的类型: <class 'torch.Tensor'>
numpy_data的类型: <class 'numpy.ndarray'>
numpy_data2的类型: <class 'numpy.ndarray'>
张量的值 tensor([100, 3, 4])
numpy的值: [100 3 4]
numpy2的值: [2 3 4]
2 . Numpy 数组转换为张量
-
使用
from_numpy()
可以将ndarray数组转换为Tensor,共享内存numpy_data=np.array([2,3,4]) data = torch.from_numpy(numpy_data) numpy_data[1]=50 print('numpy_data的值',numpy_data) print('data的值',data)
结果输出:
numpy_data的值 [ 2 50 4] data的值 tensor([ 2, 50, 4], dtype=torch.int32)
-
使用torch.tensor()可以将ndarray数组转换为Tensor,不共享内存。
numpy_data=np.array([2,3,4]) data = torch.tensor(numpy_data) numpy_data[1]=50 print('numpy_data的值',numpy_data) print('data的值',data)
结果输出:
numpy_data的值 [ 2 50 4] data的值 tensor([2, 3, 4], dtype=torch.int32)
3. 张量和数字转换
-
对于只有一个元素的张量,使用
item()
函数将该值从张量中提取出来data = torch.tensor([20,]) print(data.item()) data = torch.tensor(20) print(data.item())
输出结果:
20 20