使用Python NumPy检测矩阵连续数并生成符合条件的随机5×5矩阵
解决方案
1. 核心思路
要解决这个问题,需完成三个核心任务:生成5×5随机矩阵、检测矩阵中是否存在水平/垂直方向的4个连续递增整数、循环生成直到得到符合条件的矩阵。
2. 代码实现
import numpy as np def has_consecutive_sequence(matrix): # 检测垂直方向:每一列是否存在连续4个递增1的数 for col in matrix.T: # 计算相邻元素的差值 diffs = np.diff(col) # 寻找连续3个差值为1的情况(对应4个连续递增数) for i in range(len(diffs) - 2): if np.all(diffs[i:i+3] == 1): return True # 检测水平方向:每一行是否存在连续4个递增1的数 for row in matrix: diffs = np.diff(row) for i in range(len(diffs) - 2): if np.all(diffs[i:i+3] == 1): return True return False # 循环生成矩阵,直到找到符合条件的结果 while True: # 生成范围在0-99的5×5随机整数矩阵,数值范围可自行调整 rand_matrix = np.random.randint(0, 100, size=(5, 5)) if has_consecutive_sequence(rand_matrix): print("找到符合条件的矩阵:") print(rand_matrix) break
3. 代码说明
- 生成随机矩阵:使用
np.random.randint快速生成指定数值范围的5×5整数矩阵,示例中选了0-99,可根据需求修改范围。 - 连续数检测逻辑:
- 垂直方向:先转置矩阵遍历每一列,计算相邻元素的差值;若存在连续3个差值为1,则说明该列有4个连续递增的数。
- 水平方向:直接遍历每一行,执行与垂直方向相同的差值检测逻辑。
- 循环生成机制:通过
while True持续生成新矩阵,直到检测函数返回True,此时输出符合条件的矩阵并终止循环。
内容的提问来源于stack exchange,提问作者Andres Deagustini
相关产品推荐
相关产品推荐

