cupy.ndarray#
- class cupy.ndarray(self, shape, dtype=float, memptr=None, strides=None, order='C')[源代码]#
CUDA 设备上的多维数组。
此类实现了
numpy.ndarray方法的一个子集。不同之处在于,此类在当前的 GPU 设备上分配数组内容。- 参数:
shape (tuple of ints) – 轴的长度。
dtype – 数据类型。它必须是
numpy.dtype的参数。memptr (cupy.cuda.MemoryPointer) – 指向数组内容头的指针。
strides (tuple of ints or None) – 内存中的数据步幅。
order ({'C', 'F'}) – 行优先(C风格)或列优先(Fortran风格)顺序。
- 变量:
base (None or cupy.ndarray) – 作为视图创建此数组的基数组。
data (cupy.cuda.MemoryPointer) – 指向数组内容头的指针。
~ndarray.dtype (numpy.dtype) – 元素类型的Dtype对象。 .. 另见:: 数据类型对象 (dtype)
~ndarray.size (int) – 此数组包含的元素数量。这等同于形状元组中各元素的乘积。 .. seealso::
numpy.ndarray.size
方法
- __getitem__()#
x.__getitem__(y) <==> x[y]
支持基本和高级索引。
备注
目前,它不支持由多个布尔数组组成的
slices。备注
CuPy 处理越界索引的方式与 NumPy 不同。NumPy 通过引发错误来处理它们,但 CuPy 会将它们环绕处理。
示例
>>> a = cupy.arange(3) >>> a[[1, 3]] array([1, 0])
- __setitem__()#
x.__setitem__(slices, y) <==> x[slices] = y
支持基本和高级索引。
备注
目前,它不支持由多个布尔数组组成的
slices。备注
当使用整数数组索引时,CuPy 处理越界索引的方式与 NumPy 不同。NumPy 通过引发错误来处理它们,但 CuPy 会绕过它们。
>>> import cupy >>> x = cupy.arange(3) >>> x[[1, 3]] = 10 >>> x array([10, 10, 2])
备注
当
slices中的整数数组多次引用同一位置时,其行为与 NumPy 不同。在这种情况下,实际存储的值是未定义的。>>> import cupy >>> a = cupy.zeros((2,)) >>> i = cupy.arange(10000) % 2 >>> v = cupy.arange(10000).astype(cupy.float64) >>> a[i] = v >>> a array([9150., 9151.])
另一方面,NumPy存储与引用重复位置的索引中的最后一个索引对应的值。
>>> import numpy >>> a_cpu = numpy.zeros((2,)) >>> i_cpu = numpy.arange(10000) % 2 >>> v_cpu = numpy.arange(10000).astype(numpy.float64) >>> a_cpu[i_cpu] = v_cpu >>> a_cpu array([9998., 9999.])
- __len__()#
返回 len(self)。
- __iter__()#
实现 iter(self)。
- __copy__(self)#
- argmax(self, axis=None, out=None, dtype=None, keepdims=False) ndarray#
返回沿给定轴的最大值的索引。
备注
dtype和keepdim参数是特定于 CuPy 的。它们不在 NumPy 中。备注
axis参数接受一个整数的元组,但这是特定于 CuPy 的。NumPy 不支持它。参见
cupy.argmax()获取完整文档,numpy.ndarray.argmax()
- argmin(self, axis=None, out=None, dtype=None, keepdims=False) ndarray#
返回沿给定轴的最小值的索引。
备注
dtype和keepdim参数是特定于 CuPy 的。它们不在 NumPy 中。备注
axis参数接受一个整数的元组,但这是特定于 CuPy 的。NumPy 不支持它。参见
cupy.argmin()获取完整文档,numpy.ndarray.argmin()
- argpartition(self, kth, axis=-1) ndarray#
返回可以部分排序数组的索引。
- 参数:
- 返回:
与
a类型和形状相同的数组。- 返回类型:
参见
cupy.argpartition()获取完整文档,numpy.ndarray.argpartition()
- argsort(self, axis=-1) ndarray#
返回将以稳定排序方式对数组进行排序的索引
- 参数:
axis (int or None) – 要排序的轴。默认是 -1,这意味着沿着最后一个轴排序。如果提供 None,则在排序前将数组展平。
- 返回:
对数组进行排序的索引数组。
- 返回类型:
参见
cupy.argsort()获取完整文档,numpy.ndarray.argsort()
- astype(self, dtype, order='K', casting=None, subok=None, copy=True) ndarray#
将数组转换为给定的数据类型。
- 参数:
dtype – 类型说明符。
order ({'C', 'F', 'A', 'K'}) – 行优先(C风格)或列优先(Fortran风格)顺序。当
order为 ‘A’ 时,如果a是列优先则使用 ‘F’,否则使用 ‘C’。当order为 ‘K’ 时,它会尽可能保持步幅。copy (bool) – 如果为 False 且没有发生类型转换,则此方法返回数组本身。否则,返回一个副本。
- 返回:
如果
copy为 False 且不需要类型转换,则返回数组本身。否则,返回数组的一个(可能经过类型转换的)副本。
备注
此方法目前不支持
casting和subok参数。参见
numpy.ndarray.astype()
- choose(self, choices, out=None, mode='raise')#
- clip(self, min=None, max=None, out=None) ndarray#
返回一个数组,其值限制在 [min, max] 范围内。
参见
cupy.clip()获取完整文档,numpy.ndarray.clip()
- compress(self, condition, axis=None, out=None) ndarray#
返回沿给定轴选择的本数组的切片。
警告
此功能可能会同步设备。
参见
cupy.compress()获取完整文档,numpy.ndarray.compress()
- copy(self, order='C') ndarray#
返回数组的副本。
此方法在当前设备中复制给定的数组。即使给定的数组位于另一个设备中,您也可以将其复制到当前设备。
- 参数:
order ({'C', 'F', 'A', 'K'}) – 行优先(C风格)或列优先(Fortran风格)顺序。当
order为 ‘A’ 时,如果a是列优先则使用 ‘F’,否则使用 ‘C’。当order为 ‘K’ 时,它会尽可能紧密地保持步幅。
参见
cupy.copy()获取完整文档,numpy.ndarray.copy()
- cumprod(self, axis=None, dtype=None, out=None) ndarray#
返回沿给定轴的数组的累积乘积。
参见
cupy.cumprod()获取完整文档,numpy.ndarray.cumprod()
- cumsum(self, axis=None, dtype=None, out=None) ndarray#
返回沿给定轴的数组的累积和。
参见
cupy.cumsum()获取完整文档,numpy.ndarray.cumsum()
- diagonal(self, offset=0, axis1=0, axis2=1) ndarray#
返回指定对角线的视图。
参见
cupy.diagonal()获取完整文档,numpy.ndarray.diagonal()
- dot(self, ndarray b, ndarray out=None)#
返回与给定数组的点积。
参见
cupy.dot()获取完整文档,numpy.ndarray.dot()
- dump(self, file)#
将数组的 pickle 转储到文件中。
转储的文件可以通过
cupy.load()读回为cupy.ndarray。
- fill(self, value)#
用标量值填充数组。
- 参数:
value – 用于填充数组内容的标量值。
参见
numpy.ndarray.fill()
- flatten(self, order='C') ndarray#
返回数组展平为一维的副本。
- 参数:
order ({'C', 'F', 'A', 'K'}) – ‘C’ 表示按行优先(C 风格)顺序展平。’F’ 表示按列优先(Fortran 风格)顺序展平。’A’ 表示如果 self 在内存中是 Fortran 连续 的,则按列优先顺序展平,否则按行优先顺序展平。’K’ 表示按内存中元素出现的顺序展平 self。默认是 ‘C’。
- 返回:
数组的一个副本,具有一个维度。
- 返回类型:
参见
numpy.ndarray.flatten()
- get(self, stream=None, order='C', out=None, blocking=True)#
返回主机内存中数组的副本。
- 参数:
stream (cupy.cuda.Stream) – CUDA 流对象。如果提供,则使用该流来执行复制。否则,使用当前流。
order ({'C', 'F', 'A'}) – 主机数组所需的内存布局。当
order为 ‘A’ 时,如果数组是 fortran 连续的,则使用 ‘F’,否则使用 ‘C’。如果指定了out,则order将被忽略。out (numpy.ndarray) – 输出数组。为了启用异步复制,底层内存应为固定内存。
blocking (bool) – 如果设置为
False,复制操作将在给定的(如果提供)或当前流上异步运行,用户需负责确保流的顺序。默认值为True,因此复制操作是同步的(相对于主机)。
- 返回:
主机内存中的数组副本。
- 返回类型:
numpy.ndarray
- item(self)#
将包含一个元素的数组转换为 Python 标量
参见
numpy.ndarray.item()
- max(self, axis=None, out=None, keepdims=False) ndarray#
返回沿给定轴的最大值。
参见
cupy.amax()获取完整文档,numpy.ndarray.max()
- mean(self, axis=None, dtype=None, out=None, keepdims=False) ndarray#
返回沿给定轴的平均值。
参见
cupy.mean()获取完整文档,numpy.ndarray.mean()
- min(self, axis=None, out=None, keepdims=False) ndarray#
返回沿给定轴的最小值。
参见
cupy.amin()获取完整文档,numpy.ndarray.min()
- nonzero(self) tuple#
返回非零元素的索引。
返回的数组包含该维度中非零元素的索引。
- 返回:
非零元素的索引。
- 返回类型:
tuple of arrays
警告
此功能可能会同步设备。
参见
numpy.nonzero()
- partition(self, kth, int axis=-1)#
分区一个数组。
- 参数:
参见
cupy.partition()获取完整文档,numpy.ndarray.partition()
- prod(self, axis=None, dtype=None, out=None, keepdims=None) ndarray#
返回沿给定轴的乘积。
参见
cupy.prod()获取完整文档,numpy.ndarray.prod()
- ptp(self, axis=None, out=None, keepdims=False) ndarray#
返回沿给定轴的最大值与最小值之差。
参见
cupy.ptp()获取完整文档,numpy.ndarray.ptp()
- put(self, indices, values, mode='wrap')#
用给定的值替换数组中的指定元素。
参见
cupy.put()获取完整文档,numpy.ndarray.put()
- ravel(self, order='C') ndarray#
返回一个展平为一维的数组。
参见
cupy.ravel()获取完整文档,numpy.ndarray.ravel()
- reduced_view(self, dtype=None) ndarray#
返回数组的最小维度视图。
- 参数:
dtype – (已弃用)数据类型说明符。如果给出,则内存序列将被重新解释为新类型。
- 返回:
减少维度后的数组视图。
- 返回类型:
- repeat(self, repeats, axis=None)#
沿轴返回重复数组的数组。
参见
cupy.repeat()获取完整文档,numpy.ndarray.repeat()
- reshape(self, *shape, order='C')#
返回一个形状不同但内容相同的新数组。
参见
cupy.reshape()获取完整文档,numpy.ndarray.reshape()
- round(self, decimals=0, out=None) ndarray#
返回一个数组,其值四舍五入到给定的位数。
参见
cupy.around()获取完整文档,numpy.ndarray.round()
- scatter_add(self, slices, value)#
将给定的值添加到数组的指定元素中。
参见
cupyx.scatter_add()获取完整文档。
- scatter_max(self, slices, value)#
将由索引指定的元素的最大值存储到一个数组中。
参见
cupyx.scatter_max()获取完整文档。
- scatter_min(self, slices, value)#
将由索引指定的元素的最小值存储到一个数组中。
参见
cupyx.scatter_min()获取完整文档。
- searchsorted(self, v, side='left', sorter=None)#
查找v中元素应插入以保持顺序的索引。
有关完整文档,请参阅
cupy.searchsorted()返回:
参见
numpy.searchsorted()
- set(self, arr, stream=None)#
将主机内存中的数组复制到
cupy.ndarray。- 参数:
arr (numpy.ndarray) – 主机内存上的源数组。
stream (cupy.cuda.Stream) – CUDA 流对象。如果提供,则使用该流来执行复制。否则,使用当前流。
- sort(self, int axis=-1)#
使用稳定的排序算法对数组进行原地排序。
- 参数:
axis (int) – 要排序的轴。默认值为 -1,这意味着沿着最后一个轴排序。
备注
由于其实现原因,
ndarray.sort目前仅支持具有自身数据的数组,并且不支持numpy.ndarray.sort所支持的kind和order参数。参见
cupy.sort()获取完整文档,numpy.ndarray.sort()
- squeeze(self, axis=None) ndarray#
返回一个移除了尺寸为一的轴的视图。
参见
cupy.squeeze()获取完整文档,numpy.ndarray.squeeze()
- std(self, axis=None, dtype=None, out=None, ddof=0, keepdims=False) ndarray#
返回沿给定轴的标准偏差。
参见
cupy.std()获取完整文档,numpy.ndarray.std()
- sum(self, axis=None, dtype=None, out=None, keepdims=False) ndarray#
返回沿给定轴的和。
参见
cupy.sum()获取完整文档,numpy.ndarray.sum()
- swapaxes(self, Py_ssize_t axis1, Py_ssize_t axis2) ndarray#
返回一个数组视图,其中两个轴已交换。
参见
cupy.swapaxes()获取完整文档,numpy.ndarray.swapaxes()
- take(self, indices, axis=None, out=None) ndarray#
返回沿指定轴在给定索引处的元素数组。
参见
cupy.take()获取完整文档,numpy.ndarray.take()
- toDlpack(self)#
零拷贝转换为 DLPack 张量。
DLPack 是一个在本仓库中提出的内存中的张量结构:dmlc/dlpack。
此函数返回一个包含指向从自身ndarray转换的DLPack张量指针的
PyCapsule对象。此函数不会将自身数据复制到输出的DLpack张量中,而是共享指向相同数据内存区域的指针。- 返回:
输出封装在
PyCapsule对象中的 DLPack 张量。- 返回类型:
dltensor (
PyCapsule)
参见
fromDlpack()是一个用于从 DLPack 张量(封装在PyCapsule对象中)到ndarray的零拷贝转换的方法。警告
根据 DLPack v0.3 规范,(隐含地)假设用户负责确保生产者和消费者在同一流上操作。这一要求可能在未来的 DLPack 版本中放宽/更改。
示例
>>> import cupy >>> array1 = cupy.array([0, 1, 2], dtype=cupy.float32) >>> dltensor = array1.toDlpack() >>> array2 = cupy.fromDlpack(dltensor) >>> cupy.testing.assert_array_equal(array1, array2)
- tofile(self, fid, sep='', format='%s')#
将数组写入文件。
参见
numpy.ndarray.tofile()
- trace(self, offset=0, axis1=0, axis2=1, dtype=None, out=None) ndarray#
返回沿数组对角线的和。
参见
cupy.trace()获取完整文档,numpy.ndarray.trace()
- transpose(self, *axes)#
返回数组的一个视图,其中轴已置换。
参见
cupy.transpose()获取完整文档,numpy.ndarray.reshape()
- var(self, axis=None, dtype=None, out=None, ddof=0, keepdims=False) ndarray#
返回沿给定轴的方差。
参见
cupy.var()获取完整文档,numpy.ndarray.var()
- view(self, dtype=None, type=None)#
返回数组的视图。
- 参数:
dtype – 如果这与数组的数据类型不同,返回的视图将重新解释内存序列为此类型的数组。
- 返回:
数组的视图。对原始数组的引用存储在
base属性中。- 返回类型:
参见
numpy.ndarray.view()
- __eq__(value, /)#
返回 self==value。
- __ne__(value, /)#
返回 self!=value。
- __lt__(value, /)#
返回 self<value。
- __le__(value, /)#
返回 self<=value。
- __gt__(value, /)#
返回 self>value。
- __ge__(value, /)#
返回 self>=value。
- __bool__()#
如果 self 为真则返回 True,否则返回 False
属性
- T#
数组的形状反转视图。
如果 ndim < 2,那么这就是对数组本身的引用。
- base#
- cstruct#
数组的C语言表示。
此属性用于将数组发送到CUDA内核。返回的C结构类型因不同的dtypes和ndims而异。C类型的定义写在
cupy/carray.cuh中。
- data#
- device#
此数组所在的 CUDA 设备。
- dtype#
- flags#
包含内存布局信息的对象。
它仅包含
c_contiguous、f_contiguous和owndata属性。所有这些属性都是只读的。也支持通过索引访问。参见
numpy.ndarray.flags
- flat#
- imag#
- itemsize#
每个元素的大小(以字节为单位)。
参见
numpy.ndarray.itemsize
- nbytes#
所有元素的总大小(以字节为单位)。
它不计算元素之间的跳过次数。
参见
numpy.ndarray.nbytes
- ndim#
维度数量。
a.ndim等同于len(a.shape)。参见
numpy.ndarray.ndim
- real#
- shape#
轴的长度。
此属性的设置器涉及在不复制的情况下重塑形状。如果数组无法在不复制的情况下重塑,则会引发异常。
- size#
- strides#
轴的步幅,以字节为单位。
参见
numpy.ndarray.strides