转换一元操作#

group transformation_unaryops

枚举

enum class rounding_method : int32_t#

不同的舍入方法用于 cudf::round

关于HALF_EVEN舍入的信息:https://en.wikipedia.org/wiki/Rounding#Rounding_half_to_even 关于HALF_UP舍入的信息:https://en.wikipedia.org/wiki/Rounding#Rounding_half_away_from_zero 注意:HALF_UP意味着在幅度上向上舍入:远离零!因为Java和python的定义方式

值:

enumerator HALF_UP#
enumerator HALF_EVEN#
enum class unary_operator : int32_t#

可以对数据执行的一元操作类型。

值:

enumerator SIN#

三角正弦。

enumerator COS#

三角余弦。

enumerator TAN#

三角正切函数。

enumerator ARCSIN#

三角正弦反函数。

enumerator ARCCOS#

三角余弦反函数。

enumerator ARCTAN#

三角正切反函数。

enumerator SINH#

双曲正弦。

enumerator COSH#

双曲余弦。

enumerator TANH#

双曲正切。

enumerator ARCSINH#

双曲正弦反函数。

enumerator ARCCOSH#

双曲余弦反函数。

enumerator ARCTANH#

双曲正切反函数。

enumerator EXP#

指数(以e为底,欧拉数)

enumerator LOG#

自然对数(以e为底)

enumerator SQRT#

平方根 (x^0.5)

enumerator CBRT#

立方根 (x^(1.0/3))

enumerator CEIL#

不小于arg的最小整数值。

enumerator FLOOR#

不大于arg的最大整数值

enumerator ABS#

绝对值。

enumerator RINT#

将浮点参数 arg 四舍五入为整数值。

enumerator BIT_INVERT#

按位非 (~)

enumerator NOT#

逻辑非 (!)

函数

std::unique_ptr<column> round(column_view const &input, int32_t decimal_places = 0, rounding_method method = rounding_method::HALF_UP, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将列中的所有值四舍五入到指定的小数位数。

cudf::round 目前支持对整数、浮点数以及 decimal32decimal64 数字进行 HALF_UP 和 HALF_EVEN 舍入。对于 decimal32decimal64 数字,取反的 numeric::scale 等同于 decimal_places

示例:

using namespace cudf;

column_view a; // contains { 1.729, 17.29, 172.9, 1729 };

auto result1 = round(a);     // { 2,   17,   173,   1729 }
auto result2 = round(a, 1);  // { 1.7, 17.3, 172.9, 1729 }
auto result3 = round(a, -1); // { 0,   20,   170,   1730 }

column_view b; // contains { 1.5, 2.5, 1.35, 1.45, 15, 25 };

auto result4 = round(b,  0, rounding_method::HALF_EVEN); // { 2,   2,   1,   1,   15, 25};
auto result5 = round(b,  1, rounding_method::HALF_EVEN); // { 1.5, 2.5, 1.4, 1.4, 15, 25};
auto result6 = round(b, -1, rounding_method::HALF_EVEN); // { 0,   0,   0,   0,   20, 20};

Parameters:
  • input – 要四舍五入的值的列

  • decimal_places – 要舍入到的小数位数(默认为0)。如果为负数,则指定小数点左侧的位数。

  • method – 舍入方法

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

每列的值都进行了四舍五入

template<typename Fixed, typename Floating>
Fixed convert_floating_to_fixed(Floating floating, numeric::scale_type scale)#

将浮点值转换为定点值。

注意

此转换已从定点成员函数移至自由函数。这样做是为了确保复杂的转换代码不会包含到不需要它的代码库的许多部分中,并且更容易精确定位这些转换发生的位置。

Template Parameters:
  • Fixed – 要转换到的定点类型

  • Floating – 要转换的浮点类型

Parameters:
  • floating – 要转换的浮点数值

  • scale – 定点值的期望比例

Returns:

转换后的定点值

template<typename Floating, typename Fixed>
Floating convert_fixed_to_floating(Fixed fixed)#

将定点值转换为浮点数。

注意

此转换已从定点成员函数移至自由函数。这样做是为了确保复杂的转换代码不会包含到不需要它的代码库的许多部分中,并且更容易精确定位这些转换发生的位置。

Template Parameters:
  • Floating – 要转换到的浮点类型

  • Fixed – 要转换的定点类型

Parameters:

fixed – 要转换的定点值

Returns:

转换后的浮点数值

template<typename Floating, typename Input>
Floating convert_to_floating(Input input)#

将值转换为浮点数。

Template Parameters:
  • Floating – 要转换到的浮点类型

  • 输入 – 要转换的输入类型

Parameters:

input – 要转换的输入值

Returns:

转换后的浮点数值

std::unique_ptr<cudf::column> unary_operation(cudf::column_view const &input, cudf::unary_operator op, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对列中的所有值执行一元操作。

注意:对于decimal32decimal64,仅支持ABSCEILFLOOR

Parameters:
  • input – 一个 column_view 作为输入

  • op – 要执行的操作

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

input大小相同的列,包含操作结果

std::unique_ptr<cudf::column> is_null(cudf::column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个type_id::BOOL8类型的列,其中对于input中的每个元素,true表示该值为空,false表示该值有效。

Parameters:
  • input – 一个 column_view 作为输入

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个非空列,包含type_id::BOOL8元素,其中true表示null值。

std::unique_ptr<cudf::column> is_valid(cudf::column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个type_id::BOOL8类型的列,其中对于input中的每个元素,true表示该值有效,false表示该值为空。

Parameters:
  • input – 一个 column_view 作为输入

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个非空列,包含type_id::BOOL8类型的元素,其中false表示null值。

std::unique_ptr<column> cast(column_view const &input, data_type out_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将数据从输入中指定的数据类型转换为输出中指定的数据类型。

仅支持固定宽度类型。

Parameters:
  • input – 输入列

  • out_type – 输出列的期望数据类型

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Throws:

cudf::logic_error – 如果 out_type 不是固定宽度类型

Returns:

input大小相同的列,包含转换操作的结果

bool is_supported_cast(data_type from, data_type to) noexcept#

检查是否支持两种数据类型之间的转换。

Parameters:
  • from – 源类型

  • to – 目标类型

Returns:

如果支持转换,则为true。

std::unique_ptr<column> is_nan(cudf::column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个type_id::BOOL8类型的列,用于指示浮点数列中是否存在NaN值。如果input中第i行的元素是NAN,则输出列中第i行的元素为true,否则为false

Throws:

cudf::logic_error – 如果 input 是非浮点类型

Parameters:
  • input – 一列浮点元素

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个非空列,包含type_id::BOOL8类型的元素,其中true表示NAN

std::unique_ptr<column> is_not_nan(cudf::column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个type_id::BOOL8类型的列,用于指示浮点数列中是否缺少NaN值。如果input中第i行的元素是NAN,则输出列中第i行的元素为false,否则为true

Throws:

cudf::logic_error – 如果 input 是非浮点类型

Parameters:
  • input – 一个浮点元素的列

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个非空列,包含type_id::BOOL8元素,其中false表示NAN