def map_data(data_map, axis_num): data_map = np.max(data_map, axis=axis_num) data_map -= data_map.min() data_map = data_map / data_map.max() data_map = np.array(data_map * 255, dtype=np.uint8) return data_map 转为c++ Eigen::Tensor
时间: 2024-03-02 19:52:41 浏览: 172
C++中 map的基本操作
这里提供一种使用 Eigen::Tensor 库实现的 C++ 版本代码:
```cpp
#include <Eigen/Dense>
#include <Eigen/Tensor>
Eigen::Tensor<uint8_t, 2> map_data(const Eigen::Tensor<float, 3>& data_map, int axis_num) {
int rows = data_map.dimension(0);
int cols = data_map.dimension(1);
Eigen::Tensor<float, 2> max_vals;
if (axis_num == 0) {
max_vals = data_map.maximum(Eigen::array<int, 1>{2}).reshape(Eigen::array<int, 2>{rows, cols});
}
else {
max_vals = data_map.maximum(Eigen::array<int, 1>{1}).reshape(Eigen::array<int, 2>{rows, cols});
}
Eigen::Tensor<uint8_t, 2> mapped_data = (data_map / max_vals).maximum(0.0f).minimum(1.0f) * 255.0f;
return mapped_data;
}
```
这里使用了 Eigen::Tensor 库来处理多维数组。输入数据类型为 `Eigen::Tensor<float, 3>`,输出数据类型为 `Eigen::Tensor<uint8_t, 2>`。函数中使用 `maximum()` 和 `minimum()` 函数来进行数值的归一化,并使用 `reshape()` 函数来将三维数组转换为二维数组。
阅读全文