用cupy和numpy直接创建的数组/矩阵,类型是不一样的!无法相互之间进行运算。
用type查看二者的数据类型:
- cupy的数据类型:cupy.core.core.ndarray
- numpy的数据类型:numpy.ndarray
其实,如果只需要进行大量数组/矩阵间计算,然后将结果存储到某个"容器"之中,以cupy目前实现的函数功能来看,只用cupy来完成肯定是够的,完全可以一点没有numpy的影子。
但是,很多的"第三方包是不认识cupy的数据类型"的!本人就发现"matplotlib"就不识别cupy的数据类型!因此,如果除"纯计算"外还有别的需求,需要将cupy数据先转为numpy数据(numpy是转不了cupy的!)
cupy转numpy的函数:cupy.asnumpy()
import cupy as cp
import numpy as np
x = cp.ones( (1024,512,4,4) )*1024.
x1 = cp.asnumpy(x) # 直接cupy数据类型转numpy
print( type(x) )
print( type(x1) )
结果:
<class 'cupy.core.core.ndarray'>
<class 'numpy.ndarray'>
有了这么简单的数据互转函数,只要计算量大,可以用cupy完全替换numpy!
直到需要使用其他第三方包的时候,再把cupy数据类型转回到numpy即可。
网友评论