Python 矩阵搜索:在大矩阵中查找指定上三角矩阵
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 库。
原文地址: https://www.cveoy.top/t/topic/nSU2 著作权归作者所有。请勿转载和采集!