如何检查矩阵是否为方阵?(Python)

3 投票
5 回答
24085 浏览
提问于 2025-04-18 01:23

我想测试一个2x2的矩阵[[5,6],[7,8]],看看它是不是一个方阵。

我运行我的代码,应该得到True,但结果却是False...

 def square(sq):
     for element in sq:
         if element:
             return False
         return True

5 个回答

0

这个也应该可以用。

A 是一个包含矩阵的列表。

if not A:  
    return True  
m = len(A)  
n = len(A[0])  
if m == n:  
    return True  
else:  
    return False
0

如果你的矩阵表示的是二维空间中的两个坐标,那么你的例子就是一个正方形。你可以通过检查x和y值的差是否相等来判断这一点。下面是一个可能的代码:

def square(sq):
    delta_x = sq[1][0] - sq[0][0]
    delta_y = sq[1][1] - sq[0][1]
    return delta_x == delta_y
2

你传入的是一个列表的列表,举个例子就是 [[5,6],[7,8]]。

我们来一步步看看你的代码是怎么处理这个输入的。

for element in sq:
     if element:
         return False
     return True

首先来看这个 for 循环:

for element in sq:

这个循环会遍历你的列表,所以第一次循环时,元素是 [5,6],下一次就是 [7,8]。

接下来,你的代码会检查这个元素是否为 True。一个列表如果不为空,就被认为是 True。因此在第一次循环时,你的代码返回的是 False。

如果输入是 [[],[]],那么你的代码会返回 True,因为这个列表虽然有两个元素,但它们都是空的。

要检查一个矩阵是否是方阵,你需要看看所有列表的维度是否相同。可以这样做:

def square(sq):
    rows = len(sq)
    for row in sq:
        if len(row) != rows:
            return False
    return True
8

假设 m 是一个 numpy 矩阵,并且你已经导入了 numpy 库。

def square(m):
    return m.shape[0] == m.shape[1]
8

如果你想检查一个矩阵是不是NxN的,可以使用:

def isSquare (m): return all (len (row) == len (m) for row in m)

就像你在评论里说的:如果所有行的长度都等于行的数量,那这个矩阵就是NxN的。

撰写回答