技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

Python 程序检查二进制矩阵中的水平和垂直对称性

pythonserver side programmingprogramming

二进制格式是一种数字方案,其中每个数字 0 和 1 只有两个可能的值。这种二进制格式的主要用途是用于计算系统。

通常,矩阵是一个具有行和列的数组,行和列按数字、字母或符号排列。在二进制矩阵中,行和列按二进制值排列。

水平和垂直对称

当第一行和最后一行相似、第二行和倒数第二行相似等时,矩阵被称为水平对称。

同样,当第一列和最后一列相似、第二列和倒数第二列相似等时,矩阵被称为垂直对称。

示例

例如,让我们以矩阵为例。在矩阵中,第一行和最后一行相同,因此我们可以说矩阵是水平对称的。

现在让我们考虑另一个矩阵。这里第一列和最后一列相似,所以我们可以称该矩阵为垂直对称。

使用 Python 有多种方法可以检查矩阵是水平对称还是垂直对称,让我们一一看看。

使用嵌套循环

嵌套循环是在另一个循环内定义的循环。在本文中,我们将创建嵌套循环来检查满足水平对称和垂直对称条件的相似行和列。

示例

在此示例中,我们尝试创建一个嵌套循环来迭代二进制矩阵的行,并通过启用条件来检查矩阵中的水平对称和垂直对称来迭代二进制矩阵的列。

def is_symmetric(matrix):
   rows = len(matrix)
   cols = len(matrix[0])
   for i in range(rows):
      for j in range(cols // 2):
         if matrix[i][j] != matrix[i][cols - j - 1]:
            return False
   for i in range(rows // 2):
      for j in range(cols):
         if matrix[i][j] != matrix[rows - i - 1][j]:
            return False
   return True
binary_matrix = [[1, 0, 1],
                 [0, 1, 0],
                 [1, 0, 1]]
if is_symmetric(binary_matrix):
   print("Matrix is symmetric.")
else:
   print("Matrix is not symmetric.")

输出

Matrix is symmetric.

使用列表推导式

列表推导式是 Python 中用于使用列表创建条件或循环的技术,它使用户能够节省时间和内存,因为它在执行过程中占用的时间和空间非常少。

示例

在此示例中,我们通过实现条件来创建列表推导式,通过迭代矩阵的所有行和列来检查矩阵是否对称。

在给定的矩阵中,第一行和最后一行不相似,因此矩阵不能是对称矩阵,然后输出将返回为"矩阵不对称"。

binary_matrix = [[1, 1, 1],
                 [0, 1, 0],
                 [1, 0, 1]]
def is_symmetric(matrix):
   return all(row == row[::-1] for row in matrix) and all(column == column[::-1] for column in zip(*matrix))
if is_symmetric(binary_matrix):
   print("Matrix is symmetric.")
else:
   print("Matrix is not symmetric.")

输出

Matrix is not symmetric.

使用 Numpy 库

Numpy 库中有一个名为 flip() 的函数,用于沿给定轴反转数组中元素的顺序。当将此函数应用于数组时,形状将保持不变,但顺序将被反转。

此函数将数组作为输入参数,并将轴指定为 0 或 1。

示例

在这里,我们将创建一个二进制矩阵,并将矩阵作为输入参数传递给 numpy 库的 flip() 函数,同时一次将轴定义为 0,另一次将轴定义为 1,然后对两个翻转结果应用 and 操作,如果返回 True,则矩阵是对称的,否则为非对称的。

import numpy as np
def is_symmetric(matrix):
   arr = np.array(matrix)
   return np.all(arr == np.flip(arr)) and np.all(arr == np.flip(arr, axis=0))
binary_matrix = [[1, 0, 1],
                 [0, 1, 0],
                 [1, 0, 1]]
if is_symmetric(binary_matrix):
   print("Matrix is symmetric.")
else:
   print("Matrix is not symmetric.")

输出

Matrix is symmetric.

相关文章