CuPy数组填充报错TypeError:不允许隐式转换为NumPy数组
解决CuPy中
cp.pad()的TypeError问题 问题原因
CuPy的cp.pad()函数的pad_width参数要求传入Python原生的嵌套序列类型(如列表、元组),不支持直接传入CuPy数组。哪怕你的CuPy数组b内容格式完全符合要求,函数内部会尝试隐式转换为NumPy数组,触发了CuPy禁止隐式转换的规则,从而抛出错误。
解决方案
将CuPy数组b转换为Python原生嵌套列表即可,使用.tolist()方法(比.get()更直接,无需转成NumPy数组):
import cupy as cp a = cp.random.rand(294, 302, 372) b = cp.asarray([[5, 5], [5, 5], [2, 2]]) # 将b转换为Python列表 cp.pad(a, b.tolist(), 'symmetric')
说明
.tolist()会把CuPy数组直接转换成对应的Python嵌套列表,完全满足pad_width参数的格式要求。- 不需要使用
.get()(它会把CuPy数组转成NumPy数组),因为我们只需要Python序列,不需要中间的NumPy数组对象。
内容的提问来源于stack exchange,提问作者Laurids
相关产品推荐
相关产品推荐

