深度学习使用的三种常用数据关系相互转化及创建

本文详细介绍了深度学习中Python基本数据容器(如元组和列表)、numpy多维数组(ndarray)和PyTorch张量之间的创建方法以及它们之间的相互转化过程,包括numpy转pytorch张量、张量转numpy以及数组和张量转list等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


深度学习使用的三种常用数据关系相互转化及创建

三种数据分别是:python基本数据容器(元组、列表等)、numpy多维数组(ndarray)、pytorch张量

一、创建

基本容器

以元组为例

tuple = (1,1,1,1)

numpy多维数组

用列表传入np.array,用别的也行

import numpy as np
ndarray = np.array([[1,1,1],[1,1,1]])

numpy数组拓展——利用numpy数组创建一个图片

实际在进行图片处理时,因为大多数处理图片的库函数处理的都是ndarray数组,上面我们学会了创建ndarray数组,实际上我们就可以创建一个图片并显示了
当然这里得到的图片很小,可以自己打印一张图片的信息看一下图片内部实际样子,这样做可以更好理解图片在计算机中的存储形式
这里要注意,创建这个数组时要指定数据类型,即dtype=np.uint8,这是图片数据里面一个固有格式

import cv2
import numpy as np

ndarray = np.array([[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
                    [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]]],dtype=np.uint8)
arr = cv2.cvtColor(ndarray,cv2.COLOR_BGR2HSV)
cv2.imshow('ss',ndarray)
cv2.imshow('s',arr)
cv2.waitKey(0)
cv2.destroyAllWindows()


创建pytorch张量

import torch
tensor = torch.tensor(tuple)

二、相互转化

基本数据容器转其它两个不用说了,其实就是传入容器直接创建就行

ndarray转pytorch张量

ndarray_change = torch.from_numpy(ndarray)

张量转ndarray

pytorch中numpy方法

tensor_change  = tensor.numpy()

numpy数组、张量转列表(元组、字典…)

使用的是numpy中的对的方法,当然转元组也可以.totuple

import numpy as np
myarray = np.array[[1,2,3],[3,2,1]]
myarray.tolist()
mytensor = torch.tensor[[1,2,3],[3,2,1]]
mytensor.tolist()

测试源码

import numpy as np
import torch
tuple = (1,1,1,1)
ndarray = np.array([[1,1,1],[1,1,1]])
tensor = torch.tensor(tuple)
print(type(tuple))
print(type(ndarray))
print(type(tensor))
# numpy数组转张量
ndarray_change = torch.from_numpy(ndarray)
# 张量转numpy数组,用pytorch中方法
tensor_change  = tensor.numpy()
print('change:',type(ndarray_change))
print('change2:',type(tensor_change))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值