Python 矩阵搜索:在大矩阵中查找指定上三角矩阵

本代码使用 Python 在 4000x20 的大矩阵中查找一个 4x4 小矩阵的上三角矩阵。代码随机生成大矩阵和小矩阵,并使用循环和 NumPy 库进行矩阵比较。最后使用 Matplotlib 库绘制图像,标出找到的匹配矩阵位置。

由于题目中没有明确规定如何生成小矩阵 b,这里我们采用随机生成的方式。

代码实现

1. 生成随机矩阵

import numpy as np

# 生成 4000x20 的大矩阵 a,元素为 1-9 的随机整数
a = np.random.randint(1, 10, size=(4000, 20))

# 随机生成 4x4 的小矩阵 b
b = np.random.randint(1, 10, size=(4, 4))

2. 获取小矩阵 b 的上三角矩阵

# 取小矩阵 b 的上三角矩阵作为单元 c
c = np.triu(b)

3. 在大矩阵 a 中寻找匹配的上三角矩阵

# 在大矩阵 a 中寻找和 c 完全相同的上三角矩阵
for i in range(a.shape[0]-3):
    for j in range(a.shape[1]-3):
        if np.array_equal(c, np.triu(a[i:i+4, j:j+4])):
            print('找到匹配的矩阵,右上角元素位置为:({},{})'.format(i+3, j))
            break
    else:
        continue
    break

4. 绘制图形

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10,10))
ax.imshow(a, cmap='Blues')

rect = plt.Rectangle((j, i), 4, 4, linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(rect)

plt.show()

完整代码

import numpy as np
import matplotlib.pyplot as plt

# 生成 4000x20 的大矩阵 a,元素为 1-9 的随机整数
a = np.random.randint(1, 10, size=(4000, 20))

# 随机生成 4x4 的小矩阵 b
b = np.random.randint(1, 10, size=(4, 4))

# 取小矩阵 b 的上三角矩阵作为单元 c
c = np.triu(b)

# 在大矩阵 a 中寻找和 c 完全相同的上三角矩阵
for i in range(a.shape[0]-3):
    for j in range(a.shape[1]-3):
        if np.array_equal(c, np.triu(a[i:i+4, j:j+4])):
            print('找到匹配的矩阵,右上角元素位置为:({},{})'.format(i+3, j))
            break
    else:
        continue
    break

# 绘制图形
fig, ax = plt.subplots(figsize=(10,10))
ax.imshow(a, cmap='Blues')

rect = plt.Rectangle((j, i), 4, 4, linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(rect)

plt.show()

注意: 该代码运行需要安装 NumPy 和 Matplotlib 库。

Python 矩阵搜索:在大矩阵中查找指定上三角矩阵

原文地址: https://www.cveoy.top/t/topic/nSU2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录