列排序#
- group 排序
枚举
函数
-
std::unique_ptr<column> 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 – 用于分配返回列的设备内存的设备内存资源
- 返回:
一个非 nullable 的列,包含如果
input
排序后其置换后的行索引
-
std::unique_ptr<column> 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 – 用于分配返回列的设备内存的设备内存资源
- 返回:
一个非 nullable 的列,包含如果
input
排序后其置换后的行索引
-
bool 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
-
std::unique_ptr<table> 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> 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> 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 – 用于分配返回表的设备内存的设备内存资源
- 返回:
由
keys
行的字典序确定的values
的重新排序。
-
std::unique_ptr<table> 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 – 用于分配返回表的设备内存的设备内存资源
- 返回:
由
keys
行的字典序确定的values
的重新排序。
-
std::unique_ptr<column> 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} Result for different rank_method are 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::AVERAGE
或percentage=True
时,输出列类型将为double
。
-
std::unique_ptr<column> 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
包含大于行数的值,则行为是未定义的。Example: keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} } offsets = {0, 3, 7, 10} result = cudf::segmented_sorted_order(keys, offsets); result is { 2,1,0, 6,5,4,3, 9,8,7 }
如果
segment_offsets
为空或只包含一个索引,则不进行排序,结果是 0 到keys.size()-1
的整数序列。不需要
segment_offsets
包含所有索引。任何位于指定段之外的索引将不会被排序。Example: (offsets do not cover all indices) keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} } offsets = {3, 7} result = cudf::segmented_sorted_order(keys, offsets); result is { 0,1,2, 6,5,4,3, 7,8,9 }
- 抛出:
cudf::logic_error – 如果
segment_offsets
不是size_type
列。- 参数:
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> 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
包含大于行数的值,则行为是未定义的。Example: keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} } offsets = {0, 3, 7, 10} result = cudf::segmented_sorted_order(keys, offsets); result is { 2,1,0, 6,5,4,3, 9,8,7 }
如果
segment_offsets
为空或只包含一个索引,则不进行排序,结果是 0 到keys.size()-1
的整数序列。不需要
segment_offsets
包含所有索引。任何位于指定段之外的索引将不会被排序。Example: (offsets do not cover all indices) keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} } offsets = {3, 7} result = cudf::segmented_sorted_order(keys, offsets); result is { 0,1,2, 6,5,4,3, 7,8,9 }
- 抛出:
cudf::logic_error – 如果
segment_offsets
不是size_type
列。- 参数:
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> 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
包含大于行数的值,则行为是未定义的。Example: 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); result is { 'c','b','a', 'g','f','e','d', 'j','i','h' }
如果
segment_offsets
为空或只包含一个索引,则不进行排序,结果是values
的副本。不需要
segment_offsets
包含所有索引。任何位于指定段之外的索引将不会被排序。Example: (offsets do not cover all indices) 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); result is { 'a','b','c', 'g','f','e','d', 'h','i','j' }
- 抛出:
cudf::logic_error – 如果
values.num_rows() != keys.num_rows()
。cudf::logic_error – 如果
segment_offsets
不是size_type
列。
- 参数:
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<table> 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` 包含大于行数的值,则行为未定义。
Example: 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); result is { 'c','b','a', 'g','f','e','d', 'j','i','h' }
如果
segment_offsets
为空或只包含一个索引,则不进行排序,结果是values
的副本。不需要
segment_offsets
包含所有索引。任何位于指定段之外的索引将不会被排序。Example: (offsets do not cover all indices) 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); result is { 'a','b','c', 'g','f','e','d', 'h','i','j' }
- 抛出:
cudf::logic_error – 如果
values.num_rows() != keys.num_rows()
。cudf::logic_error – 如果
segment_offsets
不是size_type
列。
- 参数:
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> 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())#