玩命加载中 . . .

列表-张量-数组互相转化


概述

在手写深度学习神经网络模型过程中,经常面临三种数据类型的互相转化,分别是

  • list,列表类型
  • numpy.ndarray,numpy数组类型
  • torch.tensor,pytorch张量类型

list转numpy.ndarray

直接调用numpy.array(li: list)即可。

a = [1, 2, 3, 4, 5]
b = np.array(a)
print(type(a), a)
print(type(b), b)

输出:

<class 'list'> [1, 2, 3, 4, 5]
<class 'numpy.ndarray'> [1 2 3 4 5]

numpy.ndarray转list

直接调用numpy.ndarray.tolist()即可。

a = np.random.rand(2, 2)
b = a.tolist()
print(type(a), a)
print(type(b), b)

输出:

<class 'numpy.ndarray'> [[0.69879659 0.60573637] [0.68410898 0.67192278]]
<class 'list'> [[0.6987965864743525, 0.6057363669169245], [0.6841089820778812, 0.6719227772659302]]

numpy.ndarray转tensor

直接调用torch.tensor(array: numpy.ndarray)即可。

a = np.random.rand(2, 2)
b = torch.tensor(a)
print(type(a), a)
print(type(b), b)

输出:

<class 'numpy.ndarray'> [[0.03954173 0.76079466] [0.85906081 0.23727305]]
<class 'torch.Tensor'> tensor([[0.0395, 0.7608],
        [0.8591, 0.2373]], dtype=torch.float64)

tensor转numpy.ndarray

直接调用tensor.numpy()即可。

a = torch.rand(size=(2, 2))
b = a.numpy()
print(type(a), a)
print(type(b), b)

输出:

<class 'torch.Tensor'> tensor([[0.1232, 0.1971], [0.1195, 0.9030]])
<class 'numpy.ndarray'> [[0.12315023 0.19711488] [0.11953574 0.90298206]]

list转torch.tensor

直接调用torch.tensor(li: list)即可。

a = [1, 2, 3, 4, 5]
b = torch.tensor(a)
print(type(a), a)
print(type(b), b)

输出:

<class 'list'> [1, 2, 3, 4, 5]
<class 'torch.Tensor'> tensor([1, 2, 3, 4, 5])

torch.tensor转list

这里需要先将tensor转化为numpy.ndarray,然后再转化为list。即调用tensor.numpy().tolist()

a = torch.rand(size=(2, 2))
b = a.numpy().tolist()
print(type(a), a)
print(type(b), b)

输出:

<class 'torch.Tensor'> tensor([[0.3756, 0.4187], [0.1329, 0.6424]])
<class 'list'> [[0.3756064176559448, 0.418671190738678], 
[0.13289010524749756, 0.6423724889755249]]

文章作者: 鹿卿
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 鹿卿 !
评论
  目录