You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame设置偏移对角线值?已尝试np.fill_diagonal无效

解决方案

问题原因

np.fill_diagonal(df.values,1)无效是因为它仅填充整个DataFrame的主对角线(即(0,0)、(1,1)这类行列索引相同的位置),但你需要的是在第一列之外的列中,给1和-1的每组4行分别生成单位矩阵结构,两者的填充位置完全不同。

实现代码

import pandas as pd
import numpy as np

# 构造原DataFrame
original_data = [[1, 0, 0, 0, 0]] * 4 + [[-1, 0, 0, 0, 0]] * 4
df = pd.DataFrame(original_data)

# 生成目标后4列:两个4x4单位矩阵堆叠
target_cols = np.vstack([np.eye(4), np.eye(4)])

# 拼接第一列和目标列
result_df = pd.concat([df.iloc[:, 0], pd.DataFrame(target_cols)], axis=1)

# 可选:将浮点数转为整数
result_df = result_df.astype(int)

输出结果

运行后result_df将完全匹配你需要的结构:

0  0  1  2  3
0  1  1  0  0  0
1  1  0  1  0  0
2  1  0  0  1  0
3  1  0  0  0  1
4 -1  1  0  0  0
5 -1  0  1  0  0
6 -1  0  0  1  0
7 -1  0  0  0  1

内容的提问来源于stack exchange,提问作者HippoCortex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:10:28