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

Python numpy如何单行实现填充X形1的全0矩阵生成

可行的单行实现方案

你可以直接用以下任意一种单行代码替换原分割线之间的逻辑,都可以避免奇数尺寸中心值为2的问题:

  • 布尔判断转整型(最简洁推荐)
m = (np.eye(size) + np.fliplr(np.eye(size)) > 0).astype(int)

原理是两条对角线相加后,非0的位置就是需要设为1的位置,直接布尔值转整型即可得到符合要求的矩阵。

  • 最大值法
m = np.maximum(np.eye(size), np.fliplr(np.eye(size))).astype(int)

原理是取两个对角矩阵对应位置的最大值,不会出现相加得2的情况,直接转整型即可。

  • 索引直接赋值法
m = np.zeros((size, size), dtype=int); m[range(size), range(size)] = m[range(size), range(size-1, -1, -1)] = 1

原理是利用numpy的高级索引直接给两条对角线赋值1,用分号分隔两个语句实现单行。

如果想要整个函数的实现更简洁,甚至可以直接在return中写逻辑,不需要单独定义变量m:

def mat(size):
    return (np.eye(size) + np.fliplr(np.eye(size)) > 0).astype(int)

所有方案的输出都完全匹配你给出的X形矩阵示例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:15:04