C++中的numpy“.view”函数

Numpy `.view` function in C++

本文关键字:函数 view 中的 numpy C++      更新时间:2023-10-16

我正在尝试将字符串转换为 int32 C++。在Python中,我曾经做过:

import numpy as np
str = "HELLO"
np.array([str]).view(np.int32)

这导致:

array([72, 69, 76, 76, 79], dtype=int32)

即每个字符的ord

如何在C++中实现相同的目标?

附言我不是在寻找 Numpy 风格的方法来实现这一目标。但是,寻找获得相同结果的可能方法。

你可以做这样的事情:

auto arr = new int32_t[str.length()];

然后将std::transform用作:

std::transform(str.begin(), str.end(), arr, [](char chr) -> int32_t { return int32_t(chr); });

在 Python 中,它是这样做的:

>>> import numpy as np
>>> str = "HELLO"
>>> np.array([str]).view(np.int32)
array([72, 69, 76, 76, 79])

在 C/C++ 中,"HELLO" 已经与 [72, 69, 76, 76, 79] 是一回事!

static const char *s = "HELLO";
printf("%dn", s[0]);   // prints 72
printf("%dn", s[1]);   // prints 69
int x = s[2];   // x is now 76
printf("%dn", x);   // prints 76