文件 | 枚举 | 函数
排序

文件

文件  sorting.hpp
 用于排序和排名的列 API。
 

枚举

enum class  cudf::rank_method : int32_t {
  cudf::FIRST , cudf::AVERAGE , cudf::MIN , cudf::MAX ,
  cudf::DENSE
}
 用于对列进行排名的平局处理方法。 更多...
 

函数

std::unique_ptr< columncudf::sorted_order (table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 计算在字典序排序后产生 input 的行索引。 更多...
 
std::unique_ptr< columncudf::stable_sorted_order (table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 计算在稳定字典序排序后产生 input 的行索引。 更多...
 
bool cudf::is_sorted (cudf::table_view const &table, std::vector< order > const &column_order, std::vector< null_order > const &null_precedence, rmm::cuda_stream_view stream=cudf::get_default_stream())
 检查 table 的行是否按字典序排序。 更多...
 
std::unique_ptr< tablecudf::sort (table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对表的行执行字典序排序。 更多...
 
std::unique_ptr< tablecudf::stable_sort (table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对表的行执行稳定字典序排序。 更多...
 
std::unique_ptr< tablecudf::sort_by_key (table_view const &values, table_view const &keys, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 执行键值排序。 更多...
 
std::unique_ptr< tablecudf::stable_sort_by_key (table_view const &values, table_view const &keys, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 执行键值稳定排序。 更多...
 
std::unique_ptr< columncudf::rank (column_view const &input, rank_method method, order column_order, null_policy null_handling, null_order null_precedence, bool percentage, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 计算输入列在排序顺序中的排名。 更多...
 
std::unique_ptr< columncudf::segmented_sorted_order (table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 在对表中的每个段排序后返回排序顺序。 更多...
 
std::unique_ptr< columncudf::stable_segmented_sorted_order (table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 在对表中的每个段稳定排序后返回排序顺序。 更多...
 
std::unique_ptr< tablecudf::segmented_sort_by_key (table_view const &values, table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对表执行字典序分段排序。 更多...
 
std::unique_ptr< tablecudf::stable_segmented_sort_by_key (table_view const &values, table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对表执行稳定字典序分段排序。 更多...
 

详细描述

枚举类型文档

◆ rank_method

enum cudf::rank_method : int32_t
strong

用于对列进行排名的平局处理方法。

另请参阅
cudf::make_rank_aggregation 了解更多详情。
枚举成员
FIRST 

稳定排序顺序排名(无平局)

AVERAGE 

组中第一个元素的均值

MIN 

组中第一个元素的最小值

MAX 

组中第一个元素的最大值

DENSE 

组之间排名始终增加 1

定义于文件 aggregation.hpp 的第 54 行。

函数文档

◆ is_sorted()

bool cudf::is_sorted ( cudf::table_view const &  table,
std::vector< order > const &  column_order,
std::vector< null_order > const &  null_precedence,
rmm::cuda_stream_view  stream = cudf::get_default_stream() 
)

检查 table 的行是否按字典序排序。

参数
table需要比较行以确定顺序的表
column_order每列的预期排序顺序。大小必须等于 in.num_columns() 或为空。如果为空,则预期所有列均为升序。
null_precedence对于每列,null 值相对于其他元素的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,则对所有列假定为 null_order::BEFORE
stream用于设备内存操作和内核启动的 CUDA 流
返回值
如果按预期排序则返回 true,否则返回 false

◆ rank()

std::unique_ptr<column> cudf::rank ( column_view const &  input,
rank_method  method,
order  column_order,
null_policy  null_handling,
null_order  null_precedence,
bool  percentage,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

计算输入列在排序顺序中的排名。

排名表示排序后列中每个元素的位置,排名值从 1 开始。

input = { 3, 4, 5, 4, 1, 2}
不同 rank_method 的结果为
FIRST = {3, 4, 6, 5, 1, 2}
AVERAGE = {3, 4.5, 6, 4.5, 1, 2}
MIN = {3, 4, 6, 4, 1, 2}
MAX = {3, 5, 6, 5, 1, 2}
DENSE = {3, 4, 5, 4, 1, 2}
参数
input要排名的列
method用于处理平局(相同值)的排名方法
column_order排名的期望排序顺序
null_handling在排名时是否包含 null 的标志。如果未包含 null,则相应的排名将为 null。
null_precedence对于列,null 值相对于其他元素的期望顺序
percentage将排名转换为范围 (0,1] 内百分比的标志
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列的设备内存的设备内存资源
返回值
一个列,其中包含 input 列中每个元素的排名。输出列类型默认为 size_type 列,或者当 method=rank_method::AVERAGEpercentage=True 时为 double

◆ segmented_sort_by_key()

std::unique_ptr<table> cudf::segmented_sort_by_key ( table_view const &  values,
table_view const &  keys,
column_view const &  segment_offsets,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对表执行字典序分段排序。

如果 segment_offsets 包含大于行数的值,则行为未定义。

异常
cudf::logic_error如果 values.num_rows() != keys.num_rows()
cudf::logic_error如果 segment_offsets 不是 size_type 列。
示例
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sort_by_key(keys, values, offsets);
结果为 { 'c','b','a', 'g','f','e','d', 'j','i','h' }

如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是值的副本。

segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。

示例:(offsets 未覆盖所有索引)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {3, 7}
result = cudf::segmented_sort_by_key(keys, values, offsets);
结果为 { 'a','b','c', 'g','f','e','d', 'h','i','j' }
参数
values要重新排序的表
keys确定每个段中元素顺序的表
segment_offsets类型为 size_type 的列,包含每个连续段的起始偏移索引。
column_orderkeys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配任何返回对象的设备内存资源
返回值
包含每个段已排序元素的表

◆ segmented_sorted_order()

std::unique_ptr<column> cudf::segmented_sorted_order ( table_view const &  keys,
column_view const &  segment_offsets,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

在对表中的每个段排序后返回排序顺序。

如果 segment_offsets 包含大于行数的值,则行为未定义。

异常
cudf::logic_error如果 segment_offsets 不是 size_type 列。
示例
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sorted_order(keys, offsets);
结果为 { 2,1,0, 6,5,4,3, 9,8,7 }

如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是从 0 到 keys.size()-1 的整数序列。

segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。

示例:(offsets 未覆盖所有索引)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {3, 7}
result = cudf::segmented_sorted_order(keys, offsets);
结果为 { 0,1,2, 6,5,4,3, 7,8,9 }
参数
keys确定每个段中元素顺序的表
segment_offsets类型为 size_type 的列,包含每个连续段的起始偏移索引。
column_orderkeys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配任何返回对象的设备内存资源
返回值
分段排序表的排序顺序

◆ sort()

std::unique_ptr<table> cudf::sort ( table_view const &  input,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对表的行执行字典序排序。

参数
input要排序的表
column_order每列的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 input 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回值
包含 input 的期望排序顺序的新表

◆ sort_by_key()

std::unique_ptr<table> cudf::sort_by_key ( table_view const &  values,
table_view const &  keys,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

执行键值排序。

创建一个新表,根据 keys 行的字典序对 values 的行进行重新排序。

异常
cudf::logic_error如果 values.num_rows() != keys.num_rows()
参数
values要重新排序的表
keys确定顺序的表
column_orderkeys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回值
values 的重新排序,由 keys 行的字典序确定。

◆ sorted_order()

std::unique_ptr<column> cudf::sorted_order ( table_view const &  input,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

计算在字典序排序后产生 input 的行索引。

参数
input要排序的表
column_order每列的期望排序顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列都将按升序排序。
null_precedence对于每列,null 值相对于其他元素的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列的设备内存的设备内存资源
返回值
一个非可空元素列,包含 input 如果已排序时的置换行索引

◆ stable_segmented_sort_by_key()

std::unique_ptr<table> cudf::stable_segmented_sort_by_key ( table_view const &  values,
table_view const &  keys,
column_view const &  segment_offsets,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对表执行稳定字典序分段排序。

对表执行字典序分段排序。如果 segment_offsets 包含大于行数的值,则行为未定义。

异常
cudf::logic_error如果 values.num_rows() != keys.num_rows()
cudf::logic_error如果 segment_offsets 不是 size_type 列。
示例
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sort_by_key(keys, values, offsets);
结果为 { 'c','b','a', 'g','f','e','d', 'j','i','h' }

如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是值的副本。

segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。

示例:(offsets 未覆盖所有索引)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {3, 7}
result = cudf::segmented_sort_by_key(keys, values, offsets);
结果为 { 'a','b','c', 'g','f','e','d', 'h','i','j' }
参数
values要重新排序的表
keys确定每个段中元素顺序的表
segment_offsets类型为 size_type 的列,包含每个连续段的起始偏移索引。
column_orderkeys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配任何返回对象的设备内存资源
返回值
包含每个段已排序元素的表

◆ stable_segmented_sorted_order()

std::unique_ptr<column> cudf::stable_segmented_sorted_order ( table_view const &  keys,
column_view const &  segment_offsets,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

在对表中的每个段稳定排序后返回排序顺序。

在对表中的每个段排序后返回排序顺序。如果 segment_offsets 包含大于行数的值,则行为未定义。

异常
cudf::logic_error如果 segment_offsets 不是 size_type 列。
示例
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sorted_order(keys, offsets);
结果为 { 2,1,0, 6,5,4,3, 9,8,7 }

如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是从 0 到 keys.size()-1 的整数序列。

segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。

示例:(offsets 未覆盖所有索引)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {3, 7}
result = cudf::segmented_sorted_order(keys, offsets);
结果为 { 0,1,2, 6,5,4,3, 7,8,9 }
参数
keys确定每个段中元素顺序的表
segment_offsets类型为 size_type 的列,包含每个连续段的起始偏移索引。
column_orderkeys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配任何返回对象的设备内存资源
返回值
分段排序表的排序顺序

◆ stable_sort()

std::unique_ptr<table> cudf::stable_sort ( table_view const &  input,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对表的行执行稳定字典序排序。

对表的行执行字典序排序。

参数
input要排序的表
column_order每列的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 input 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回值
包含 input 的期望排序顺序的新表

◆ stable_sort_by_key()

std::unique_ptr<table> cudf::stable_sort_by_key ( table_view const &  values,
table_view const &  keys,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

执行键值稳定排序。

执行键值排序。创建一个新表,根据 keys 行的字典序对 values 的行进行重新排序。

异常
cudf::logic_error如果 values.num_rows() != keys.num_rows()
参数
values要重新排序的表
keys确定顺序的表
column_orderkeys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。
null_precedence对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回值
values 的重新排序,由 keys 行的字典序确定。

◆ stable_sorted_order()

std::unique_ptr<column> cudf::stable_sorted_order ( table_view const &  input,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

计算在稳定字典序排序后产生 input 的行索引。

保证保留等效元素的顺序。

计算在字典序排序后产生 input 的行索引。

参数
input要排序的表
column_order每列的期望排序顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列都将按升序排序。
null_precedence对于每列,null 值相对于其他元素的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列的设备内存的设备内存资源
返回值
一个非可空元素列,包含 input 如果已排序时的置换行索引