如何检查矩阵是否为方阵?(Python)
我想测试一个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的。