np.array中的中文转为数值
时间: 2023-11-23 08:16:15 浏览: 120
np.array只能存储数值类型的数据,无法直接存储中文字符。如果需要将中文转为数值,可以使用编码方式,将每个中文字符转换为对应的数字。例如,可以使用Unicode编码或GB2312编码将中文字符转换为数值,然后存储到np.array中。具体的转换方式可以参考Python中的编码库,例如chardet、iconv等。
相关问题
将pd.DataFrame转为np.array
可以使用`values`属性将一个Pandas DataFrame转换为NumPy数组。例如,假设你有一个DataFrame `df`,你可以通过以下方式将其转换为NumPy数组:
```python
import numpy as np
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 将DataFrame转换为NumPy数组
arr = df.values
# 打印NumPy数组
print(arr)
```
输出:
```
array([[1, 4],
[2, 5],
[3, 6]])
```
在这个例子中,`arr`是一个NumPy数组,包含DataFrame `df`的所有值。注意,NumPy数组不包含列名或行索引等信息,只包含数值数据。
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
这里提供一种使用 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()` 函数来将三维数组转换为二维数组。
阅读全文