给数组进行初始化时,numpy确实要比cupy好用!因为numpy完全认识python自带的各种数据类型,如列表、元组等等;但是cupy一般只认识自己的数据类型!—— 这就导致二者在"赋值方式"上会有一点儿差别,直接看例子:
import numpy as np
import cupy as cp
# 用numpy可以直接用"加列表"来赋值:
w1 = [1, 2, 3]
w_np = np.zeros( (3,1,3) ) + w1
# 用cupy不能用"列表"来赋值,必须是"同数据类型"的一维数组:
w11 = cp.array([w1])
w_cp = cp.zeros( (3,1,3) ) + w11
即:cupy的赋值必须是用cupy自己的数组来赋值!不能直接用列表!否则会报如下的错误:
TypeError: Unsupported type <class 'list'>
其实,这种赋值要求并无坏处!它会使得你的数据类型从头至尾都是统一的:cupy.core.core.ndarray数据类型,不会在计算过程中的某部出现numpy数据类型与cupy数据类型不相容的情况!—— 我们只需在所有计算完成的最后,用cupy.asnumpy()转换回numpy即可。
网友评论