Cupy与Numpy的数据类型互转
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cupy与Numpy的数据类型互转相关的知识,希望对你有一定的参考价值。
参考技术A用cupy和numpy直接创建的数组/矩阵,类型是不一样的!无法相互之间进行运算。
用type查看二者的数据类型:
其实,如果只需要进行大量数组/矩阵间计算,然后将结果存储到某个" 容器 "之中,以cupy目前实现的函数功能来看,只用cupy来完成肯定是够的,完全可以一点没有numpy的影子。
但是,很多的" 第三方包是不认识cupy的数据类型 "的!本人就发现" matplotlib "就不识别cupy的数据类型!因此,如果除" 纯计算 "外还有别的需求,需要将cupy数据先转为numpy数据(numpy是转不了cupy的!)
cupy转numpy的函数: cupy.asnumpy()
结果:
有了这么简单的数据互转函数,只要计算量大,可以用cupy完全替换numpy!
直到需要使用其他第三方包的时候,再把cupy数据类型转回到numpy即可。
cupy或numpy中"数组"与"矩阵"的区别
参考技术Acupy和numpy在矩阵和数组的使用上没有区别,在认识/创建层面有一些区别。
在numpy和cupy中," 数组 "和" 矩阵 "数据类型的区别如下:
(1)numpy中各种函数创建的" 数据类型 "的例子:
(2)numpy中把原始的" 数组转成矩阵 "的唯一方式:
(3)当原始" 数组高于二维时 ",无法转为矩阵:
(4)" 二维数组 "可直接进行各种线性代数的矩阵操作(无需先转为矩阵):
(5)" 三维及以上数组 ",进行线性代数矩阵运算,结果和低维矩阵一样!
以上是关于Cupy与Numpy的数据类型互转的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:参数“x”的类型不正确(预期为cupy.core.core.ndarray,得到了numpy.ndarray)