文件 | |
文件 | sorting.hpp |
用于排序和排名的列 API。 | |
枚举 | |
enum class | cudf::rank_method : int32_t { cudf::FIRST , cudf::AVERAGE , cudf::MIN , cudf::MAX , cudf::DENSE } |
用于对列进行排名的平局处理方法。 更多... | |
|
strong |
用于对列进行排名的平局处理方法。
枚举成员 | |
---|---|
FIRST | 稳定排序顺序排名(无平局) |
AVERAGE | 组中第一个元素的均值 |
MIN | 组中第一个元素的最小值 |
MAX | 组中第一个元素的最大值 |
DENSE | 组之间排名始终增加 1 |
定义于文件 aggregation.hpp 的第 54 行。
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 流 |
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 | 要排名的列 |
method | 用于处理平局(相同值)的排名方法 |
column_order | 排名的期望排序顺序 |
null_handling | 在排名时是否包含 null 的标志。如果未包含 null,则相应的排名将为 null。 |
null_precedence | 对于列,null 值相对于其他元素的期望顺序 |
percentage | 将排名转换为范围 (0,1] 内百分比的标志 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列的设备内存的设备内存资源 |
input
列中每个元素的排名。输出列类型默认为 size_type
列,或者当 method=rank_method::AVERAGE
或 percentage=True
时为 double
。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 列。 |
如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是值的副本。
segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。
values | 要重新排序的表 |
keys | 确定每个段中元素顺序的表 |
segment_offsets | 类型为 size_type 的列,包含每个连续段的起始偏移索引。 |
column_order | keys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。 |
null_precedence | 对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配任何返回对象的设备内存资源 |
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 列。 |
如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是从 0 到 keys.size()-1
的整数序列。
segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。
keys | 确定每个段中元素顺序的表 |
segment_offsets | 类型为 size_type 的列,包含每个连续段的起始偏移索引。 |
column_order | keys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。 |
null_precedence | 对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配任何返回对象的设备内存资源 |
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
的期望排序顺序的新表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_order | keys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。 |
null_precedence | 对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
values
的重新排序,由 keys
行的字典序确定。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
如果已排序时的置换行索引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 列。 |
如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是值的副本。
segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。
values | 要重新排序的表 |
keys | 确定每个段中元素顺序的表 |
segment_offsets | 类型为 size_type 的列,包含每个连续段的起始偏移索引。 |
column_order | keys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。 |
null_precedence | 对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配任何返回对象的设备内存资源 |
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 列。 |
如果 segment_offsets 为空或只包含一个索引,则不会对值进行排序,且结果是从 0 到 keys.size()-1
的整数序列。
segment_offsets 不需要包含所有索引。指定段之外的任何索引都不会被排序。
keys | 确定每个段中元素顺序的表 |
segment_offsets | 类型为 size_type 的列,包含每个连续段的起始偏移索引。 |
column_order | keys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。 |
null_precedence | 对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配任何返回对象的设备内存资源 |
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
的期望排序顺序的新表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_order | keys 中每列的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列都按升序排序。 |
null_precedence | 对于 keys 中的每列,null 元素相对于其他元素的期望顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
values
的重新排序,由 keys
行的字典序确定。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
如果已排序时的置换行索引