dask.array.topk

dask.array.topk

dask.array.topk(a, k, axis=- 1, split_every=None)[源代码]

从给定轴上的数组中提取 k 个最大的元素,并按从大到小的顺序返回它们。如果 k 为负数,则提取 -k 个最小的元素,并按从小到大的顺序返回它们。

k 远小于块大小时,此操作效果最佳。所有结果将沿给定轴以单个块的形式返回。

参数
x: 数组

数据正在排序

k: int
轴: int, 可选
split_every: int >=2, 可选

参见 reduce()。当 k 与块大小处于同一数量级或更大时,此参数变得非常重要,因为它防止一次性将整个或输入数组的大部分内容加载到内存中,这在分布式运行时也会对网络传输产生负面影响。

返回
沿给定轴选择大小为 abs(k) 的 x。

示例

>>> import dask.array as da
>>> x = np.array([5, 1, 3, 6])
>>> d = da.from_array(x, chunks=2)
>>> d.topk(2).compute()
array([6, 5])
>>> d.topk(-2).compute()
array([1, 3])