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

如何使用Numpy在Python中生成8×8的0和1交替矩阵

如何用Numpy创建8×8的0-1交替矩阵

你当前使用的np.random.binomial(n=1, p=0.5, size=[64])生成的是随机分布的0和1,无法满足行列严格交替的要求。要实现你期望的矩阵,可利用Numpy的数组广播特性,通过行号与列号的奇偶性来构造:

方法1:简洁的广播实现

import numpy as np

# 生成行号数组(8行1列)和列号数组(1行8列)
rows = np.arange(8).reshape(8, 1)
cols = np.arange(8)
# 根据行号+列号的奇偶性赋值,0和1自动交替
matrix = (rows + cols) % 2

执行后得到的矩阵就是你期望的结果:

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

方法2:循环赋值(更直观)

如果需要更直观的逻辑,也可以用双层循环逐个赋值:

import numpy as np

matrix = np.zeros((8, 8), dtype=int)
for i in range(8):
    for j in range(8):
        # 行号i与列号j之和为偶数则赋值0,奇数则赋值1
        matrix[i][j] = (i + j) % 2

调整起始值

如果想要第一行从1开始交替,只需修改赋值逻辑为:

matrix = 1 - (rows + cols) % 2

为什么原方法不行

np.random.binomial是基于概率生成随机数,每个位置的0和1是随机的,无法保证行列间的严格交替规律,因此只能生成类似你给出的“不想要”的随机矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:57:11