python中list,ndarray,Tensor间的转换小结

 更新时间:2024年02月02日 11:30:58   作者:tao355667  
数据类型转换是常见的功能,本文主要介绍了python中list,ndarray,Tensor间的转换小结,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

一、list,ndarray,Tensor间的转化

废话不多说,看表格就行

数据类型所属包
listpython
ndarraynumpy
Tensorpytorch
转化类型对应API注意点
list转换为ndarraynumpy.array()
ndarray转换为listndarray对象.tolist()
list转换为Tensortorch.tensor()list中的int类型数据转换后会变为folat,若需要保持int,则转换时需要加上类型
Tensor转换为listTensor对象.tolist()
ndarray转换为Tensortorch.from_numpy()torch.tensor()
Tensor(CPU)转换为ndarrayTensor对象.numpy()GPU上的Tensor不能直接转换为numpy,需要间接转换
Tensor(GPU)转换为ndarrayTensor对象.cpu().numpy()GPU上的Tensor不能直接转换为numpy,需要间接转换

ndarray --> PILimage

From PIL import Image
y = Image.fromarray(array)

PILimage --> ndarray

From PIL import Image
image = Image.open(“…..”)
img = np.asarray(image)

Tensor --> ndarray

import numpy as np
yy = np.array(tensor) 

ndarray --> Tensor

tensor = torch.from_numpy(ndarray)

tip:返回的张量和ndarray共享同一内存。对张量的修改将反映在ndarray中,反之亦然。

ndarray数据转换数据类型

array.astype(np.uint8)  

将array复制,并将数据类型强制转化为int8

ndarray --> List

import numpy as np
n = np.array([[1,2],[3,4],[5,6]])
m = n.tolist()

List --> Tensor

tensor = torch.tensor(list)

二、例程

import numpy as np
import torch

#list转换为ndarray
li=[[1,2,3],[4,5,6],[7,8,9]]
a=np.array(li)  #list转换为ndarray
print(a) 
print(type(a),'\n')

#ndarray转换为list
b=a.tolist()#ndarray转换为list
print(b) 
print(type(b),'\n')

#list转换为Tensor
li=[[1,2,3],[4,5,6],[7,8,9]]
c=torch.tensor(li)  #list转换为Tensor
print(c)
print(type(c),'\n')

#Tensor转换为list
d=c.tolist() #Tensor转换为list
print(d) 
print(type(d),'\n')

#ndarray转换为Tensor
nd=np.arange(0,12).reshape(3,4)
e=torch.from_numpy(nd)  #ndarray转换为Tensor
# e=torch.tensor(nd)    #ndarray转换为Tensor
print(e) 
print(type(e),'\n')

#Tensor转换为ndarray
f=e.numpy()
print(f) 
print(type(f),'\n')

运行结果

[[1 2 3]
 [4 5 6]
 [7 8 9]]
<class 'numpy.ndarray'> 

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
<class 'list'> 

tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
<class 'torch.Tensor'> 

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
<class 'list'> 

tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]], dtype=torch.int32)
<class 'torch.Tensor'> 

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
<class 'numpy.ndarray'> 

到此这篇关于python中list,ndarray,Tensor间的转化小结的文章就介绍到这了,更多相关python list,ndarray,Tensor转化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python骚操作完美实现短视频伪原创

    Python骚操作完美实现短视频伪原创

    剪辑的视频上传到某平台碰到降权怎么办?视频平台都有一套自己的鉴别算法,专门用于处理视频的二次剪辑,本篇我们来用python做一些特殊处理
    2022-02-02
  • 在Django中创建动态视图的教程

    在Django中创建动态视图的教程

    这篇文章主要介绍了在Django中创建动态视图的教程,Django是Python重多人气框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • 详解python文件的操作和异常的处理

    详解python文件的操作和异常的处理

    这篇文章主要为大家介绍了python文件的操作和异常的处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 使用python 将图片复制到系统剪贴中

    使用python 将图片复制到系统剪贴中

    今天小编就为大家分享一篇使用python 将图片复制到系统剪贴中,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python爬取B站关注列表及数据库的设计与操作

    python爬取B站关注列表及数据库的设计与操作

    这篇文章主要为大家介绍了python爬取B站关注列表及数据库的设计与操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解Python中的字符串常识

    详解Python中的字符串常识

    这篇文章主要为大家介绍了Python中的字符串常识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 在python的类中动态添加属性与生成对象

    在python的类中动态添加属性与生成对象

    这篇文章给大家介绍了如何在python的类中动态添加属性和生成对象,文中通过几个方面来进行介绍,对这感兴趣的朋友们可以学习学习。
    2016-09-09
  • python数学建模(SciPy+ Numpy+Pandas)

    python数学建模(SciPy+ Numpy+Pandas)

    这篇文章主要介绍了python数学建模(SciPy+ Numpy+Pandas),文章基于python的相关资料紧接上一篇文章内容展开主题详情,需要的小伙伴可以参考一下
    2022-07-07
  • Python中six模块基础用法

    Python中six模块基础用法

    在本篇文章里小编给大家分享的是关于Python中six模块基础用法以及相关知识点,需要的朋友们学习下。
    2019-12-12
  • python安装pandas库不成功原因分析及解决办法

    python安装pandas库不成功原因分析及解决办法

    Pandas是python中非常常用的数据分析库,在数据分析、机器学习、深度学习等领域经常被使用,下面这篇文章主要给大家介绍了关于python安装pandas库不成功原因分析及解决办法的相关资料
    2023-11-11

最新评论