C++ 中是不是有与 python 中的 astype() 函数等效的函数?
Posted
技术标签:
【中文标题】C++ 中是不是有与 python 中的 astype() 函数等效的函数?【英文标题】:Is there any equivalent function in C++ as the astype() function in python?C++ 中是否有与 python 中的 astype() 函数等效的函数? 【发布时间】:2016-03-09 23:46:38 【问题描述】:我正在寻找一个函数,它可以将数组的每个元素转换为 c++ 中的浮点类型(就像 astype() 在 python 中所做的那样)。 你知道吗?
谢谢
【问题讨论】:
没有。原始类型不是多态的。std::static_cast<float>(whatever)
.
我需要一个函数将数组的每个元素转换为浮点数。
@mzar 像float[] float_arr = cast_to_floats(int_arr);
这样的东西不起作用,因为你不能分配给数组。
能否贴出实际代码和错误信息?
【参考方案1】:
您可以将单个项目投射到float
,但不能一次投射整个数组。
您可以很容易地创建一个包含原始数组中的值的float
s 向量,并将每个值单独转换为float
类型:
template <class T, size_t N>
std::vector<float> asFloat(T (&input)[N])
return std::vector<float> input, input+N;
但是请注意,这会创建一个由原始数组中的值创建的 float
值的新数组,而根本不会更改/影响原始数组。另请注意,由于这是一个模板,因此可以将其应用于定义了从 T 到 float
的转换的任何类型,即使该转换可能没有多大意义或产生特别有用的结果(例如, char
):
char input[] = 'a', 'b', 'c' ;
auto result = asFloat(input);
如果您打印出result
的内容,您通常会得到:
97 98 99
这是大多数常见字符集(ASCII、Unicode 等)中a
、b
和c
的编码,但这些作为浮点值并没有多大意义。
然而,基于 cmets,您只是试图创建一个 float
数组。这里有几个小细节需要处理。一是你可能真的想要一个vector
而不是一个数组。另一个是浮点字面量默认为double
类型。使用 double
值初始化 float
变量可能(并且经常会)导致警告可能会丢失数据或类似情况。
因此,当您初始化 float
的数组或向量时,您通常希望包含一个后缀以强制将值键入 float
:
std::vector<float> values 1.0f, 2.0f, 3.0f;
【讨论】:
以上是关于C++ 中是不是有与 python 中的 astype() 函数等效的函数?的主要内容,如果未能解决你的问题,请参考以下文章
R 是不是有与 Python 中的 reduce() 等价的东西?
Scala 中是不是有与 Python 更通用的 map 函数等价的功能?
在 C++/STL 中是不是有与 Python range() 等效的紧凑函数
pandas 中是不是有与 excel 中的 MATCH 函数等效的函数?