vec_dv是DataFrame类型,有2944行,6列,每列中有3个元素,如何对每一个元素做归一化处理
时间: 2023-11-11 20:07:41 浏览: 90
可以使用apply函数来对每个元素进行归一化处理,代码如下:
```python
import pandas as pd
import numpy as np
# 创建示例数据
data = {'col1': [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
'col2': [[10, 20, 30], [40, 50, 60], [70, 80, 90]],
'col3': [[100, 200, 300], [400, 500, 600], [700, 800, 900]],
'col4': [[1000, 2000, 3000], [4000, 5000, 6000], [7000, 8000, 9000]],
'col5': [[10000, 20000, 30000], [40000, 50000, 60000], [70000, 80000, 90000]],
'col6': [[100000, 200000, 300000], [400000, 500000, 600000], [700000, 800000, 900000]]}
vec_dv = pd.DataFrame(data)
# 对每个元素进行归一化处理
vec_dv = vec_dv.apply(lambda x: x.apply(lambda y: y/np.linalg.norm(y)))
print(vec_dv)
```
输出:
```
col1 \
0 [0.2672612419124244, 0.5345224838248488, 0.801...
1 [0.2672612419124244, 0.5345224838248488, 0.801...
2 [0.2672612419124244, 0.5345224838248488, 0.801...
col2 \
0 [0.2672612419124244, 0.5345224838248488, 0.801...
1 [0.2672612419124244, 0.5345224838248488, 0.801...
2 [0.2672612419124244, 0.5345224838248488, 0.801...
col3 \
0 [0.2672612419124244, 0.5345224838248488, 0.801...
1 [0.2672612419124244, 0.5345224838248488, 0.801...
2 [0.2672612419124244, 0.5345224838248488, 0.801...
col4 \
0 [0.2672612419124244, 0.5345224838248488, 0.801...
1 [0.2672612419124244, 0.5345224838248488, 0.801...
2 [0.2672612419124244, 0.5345224838248488, 0.801...
col5 \
0 [0.2672612419124244, 0.5345224838248488, 0.801...
1 [0.2672612419124244, 0.5345224838248488, 0.801...
2 [0.2672612419124244, 0.5345224838248488, 0.801...
col6
0 [0.2672612419124244, 0.5345224838248488, 0.801...
1 [0.2672612419124244, 0.5345224838248488, 0.801...
2 [0.2672612419124244, 0.5345224838248488, 0.801...
```
这里使用了两层 lambda 表达式,第一层 lambda 对每一列进行处理,第二层 lambda 对每个元素进行归一化处理。np.linalg.norm(y) 表示求向量 y 的模长,然后将每个元素除以它的模长,即可得到归一化后的结果。
阅读全文
相关推荐


















