文章目录
深度学习使用的三种常用数据关系相互转化及创建
三种数据分别是: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))