我正在使用cupy
进行以下操作,这非常快:
import cupy as cp
shape = (256, 170, 256)
deformation = cp.meshgrid(cp.arange(shape[0]),
cp.arange(shape[1]),
cp.arange(shape[2]),
indexing='ij')
但是,如果我将其转换为以下数组:
deformation = cp.array(cp.meshgrid(cp.arange(shape[0]),
cp.arange(shape[1]),
cp.arange(shape[2]),
indexing='ij'))
这似乎很慢,或者只是挂起(5分钟后我放弃了)。我不确定我在做什么错。
我还尝试将copy=False
传递给cp.array
调用,但这没有任何改变。
答案 0 :(得分:1)
我不支持这种从cupy数组列表到cupy数组的转换。如果我缩小您的shape
,例如(8,8,8)我收到python错误。
如果我们为cupy.meshgrid
研究the documentation,我们会看到它返回:
返回:cupy.ndarray的列表
丘比特documentation具体说:
当前,
cupy.array()
或cupy.asarray()
无法从包含CuPy数组(例如CuPy数组列表)的Python对象创建数组。请改用cupy.stack()
。
使用那里的建议,这对我来说似乎相对较快:
$ cat t6.py
import cupy as cp
shape = (256, 170, 256)
deformation = cp.stack(cp.meshgrid(cp.arange(shape[0]),
cp.arange(shape[1]),
cp.arange(shape[2]),
indexing='ij'))
$ time python t6.py
real 0m1.281s
user 0m0.608s
sys 0m0.492s
$