numpy与tensor数据类型互换

PyTorch学习笔记:numpy与tensor数据类型互换

numpy转换为tensor

torch.from_numpy(ndarray) → Tensor

tensor转换为numpy

Tensor.numpy() → numpy.ndarray

注意:

  • 无论是numpy转换为tensor还是tensor转换为numpy,两者的变换后得到的数据与变换前的数据共享底层存储,即改变一方的数据,另一方的数据也会相应改变。

代码案例

numpy转换为tensor

import torch
import numpy as np
a=np.arange(10).reshape(2,5)
b=torch.from_numpy(a)
print(type(a))
print(type(b))

输出

# 原数据类型
<class 'numpy.ndarray'>
# 转化后数据类型
<class 'torch.Tensor'>

tensor转换为numpy

import torch
import numpy as np
a=torch.arange(10).view(2,5)
b=a.numpy()
print(type(a))
print(type(b))

输出

# 原数据类型
<class 'torch.Tensor'>
# 转化后数据类型
<class 'numpy.ndarray'>

共享底层内存

import torch
import numpy as np
a=torch.arange(10).view(2,5)
b=a.numpy()
print(a)
b[0,1]=99
print(a)
print(b)

输出

# 原始的a
tensor([[0, 1, 2, 3, 4],
        [5, 6, 7, 8, 9]])
# 转化后的
tensor([[ 0, 99,  2,  3,  4],
        [ 5,  6,  7,  8,  9]])
[[ 0 99  2  3  4]
 [ 5  6  7  8  9]]

转化后的数据相当于是转化前的数据的一个视图底层的存储数据都是一样的,只要改变一方的数据,另一方也会随着改变。

官方文档

torch.from_numpy():https://pytorch.org/docs/stable/generated/torch.from_numpy.html?highlight=torch%20from_numpy#torch.from_numpy

Tensor.numpy():https://pytorch.org/docs/stable/generated/torch.Tensor.numpy.html?highlight=torch%20numpy#torch.Tensor.numpy

点个赞支持一下吧

你可能感兴趣的:(PyTorch学习笔记,pytorch,python,深度学习)