转换 一元操作#

group 一元 操作

枚举

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#

不小于参数的最小整数值。

enumerator FLOOR#

不大于参数的最大整数值

enumerator ABS#

绝对值。

enumerator RINT#

将浮点参数 arg 舍入到整数值。

enumerator BIT_INVERT#

按位非 (~)

enumerator NOT#

逻辑非 (!)

enumerator NEGATE#

一元负号 (-),仅适用于有符号数值和持续时间类型。

函数

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};

参数:
  • input – 要舍入的值列

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

  • method – 舍入方法

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

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

返回值:

每项值都已舍入的列

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

将浮点值转换为定点数。

注意

此转换已从定点成员函数移至自由函数。这样做是为了避免将复杂的转换代码包含到代码库中不需要它的许多部分中,并且更清楚地指出这些转换发生的位置。

模板参数:
  • Fixed – 要转换到的定点类型

  • Floating – 要从中转换的浮点类型

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

  • scale – 定点数的期望精度

返回值:

转换后的定点值

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

将定点值转换为浮点数。

注意

此转换已从定点成员函数移至自由函数。这样做是为了避免将复杂的转换代码包含到代码库中不需要它的许多部分中,并且更清楚地指出这些转换发生的位置。

模板参数:
  • Floating – 要转换到的浮点类型

  • Fixed – 要从中转换的定点类型

参数:

fixed – 要转换的定点值

返回值:

转换后的浮点值

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

将值转换为浮点数。

模板参数:
  • Floating – 要转换到的浮点类型

  • Input – 要从中转换的输入类型

参数:

input – 要转换的输入值

返回值:

转换后的浮点值

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 操作。

参数:
  • input – 作为输入的 column_view

  • op – 要执行的操作

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

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

返回值:

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` 表示值有效。

参数:
  • input – 作为输入的 column_view

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

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

返回值:

一个由 `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` 表示值为空。

参数:
  • input – 作为输入的 column_view

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

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

返回值:

一个由 `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())#

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

仅支持固定宽度类型。

参数:
  • input – 输入列

  • out_type – 输出列所需的 数据类型

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

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

抛出:

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

返回值:

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

bool is_supported_cast(data_type from, data_type to) noexcept#

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

参数:
  • from – 源类型

  • to – 目标类型

返回值:

如果转换受支持则为 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`。

抛出:

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

参数:
  • input – 浮点元素列

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

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

返回值:

一个由 `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`。

抛出:

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

参数:
  • input – 浮点元素列

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

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

返回值:

一个由 `type_id::BOOL8` 元素组成的非可空列,其中 `false` 表示 `NAN` 值