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

如何对numpy矩阵rmat的对角线元素执行1转0、0转1的翻转操作

Numpy矩阵主对角线二值元素翻转实现方案

你的需求可以通过numpy内置的索引操作实现,0和1互转的逻辑可以直接用二值异或或者算术取反实现,无需额外条件判断。

基础实现(直接修改原矩阵)

在你给出的代码基础上补充后如下:

import numpy as np
# 原矩阵生成代码
mat = np.random.binomial(1, .5, 4)
rmat = np.array([mat, ]*4)

# 翻转主对角线元素
rmat[np.diag_indices_from(rmat)] ^= 1

如果你对异或运算不熟悉,也可以用更直观的算术写法实现完全相同的效果:

rmat[np.diag_indices_from(rmat)] = 1 - rmat[np.diag_indices_from(rmat)]

可选实现(保留原矩阵,生成新矩阵)

如果需要保留原始rmat不变,可以用如下写法生成新的结果矩阵:

new_rmat = rmat.copy()
# 提取对角线元素取反后回填
np.fill_diagonal(new_rmat, new_rmat.diagonal() ^ 1)

效果示例

假设生成的原rmat为:

[[1 0 1 0]
 [1 0 1 0]
 [1 0 1 0]
 [1 0 1 0]]

执行翻转操作后结果为:

[[0 0 1 0]
 [1 1 1 0]
 [1 0 0 0]
 [1 0 1 1]]

可以看到主对角线的1、0、1、0已经被翻转成0、1、0、1,完全符合要求。

内容的提问来源于stack exchange,提问作者Expectation mean first moment

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:06:03