N维数组 (ndarray)#

cupy.ndarray 是 CuPy 中对应 NumPy 的 numpy.ndarray。它提供了一个直观的接口,用于表示位于 CUDA 设备上的固定大小多维数组。

关于 ndarray 的基本概念,请参阅 NumPy 文档

cupy.ndarray(self, shape[, dtype, memptr, ...])

CUDA 设备上的多维数组。

与 NumPy 数组之间的转换#

cupy.ndarraynumpy.ndarray 不能隐式相互转换。这意味着 NumPy 函数不能将 cupy.ndarray 作为输入,反之亦然。

请注意,在 cupy.ndarraynumpy.ndarray 之间进行转换会产生主机 (CPU) 设备与 GPU 设备之间的数据传输,这会带来显著的性能开销。

cupy.array(obj[, dtype, copy, order, subok, ...])

在当前设备上创建一个数组。

cupy.asarray(a[, dtype, order, blocking])

将对象转换为数组。

cupy.asnumpy(a[, stream, order, out, blocking])

从任意源数组返回主机内存中的数组。

代码兼容性特性#

cupy.ndarray 在代码兼容性方面被设计为尽可能与 numpy.ndarray 互换。但在某些情况下,您需要知道正在处理的数组是 cupy.ndarray 还是 numpy.ndarray。一个例子是调用模块级函数,如 cupy.sum()numpy.sum()。在这种情况下,可以使用 cupy.get_array_module()

cupy.get_array_module(*args)

返回参数的数组模块。

cupyx.scipy.get_array_module(*args)

返回参数的数组模块。