newb在这里,我试图比较矩阵及其转置矩阵与公差之间的差异。首先,我需要检查它是一个正方形,然后如果不同是与tollerance.I我得到一个错误,最后两行代码是无法访问。对于上面的输出应该是True True,但我只得到第一个True(即它是一个方阵。
import numpy as np
a= np.array(([[1, 2, 3,],[2, 3, 4],[3, 4, 1]]))
def check_symmetric(a,tol):
b = a.transpose(1, 0)
print (a)
print(b)
rows = a.shape[1]
col = a.shape[0]
z= abs(a-b)
print(z)
if rows != col: #check to make sure the list is a square
return False
return True;
result = (abs(a - b) <= tol).all()
print(result)
print check_symmetric(a,tol=1e-8)
答案 0 :(得分:1)
将return语句移到函数的底部:
return True;
result = (abs(a - b) <= tol).all()
print(result)
会变成:
result = (abs(a - b) <= tol).all()
print(result)
return True;
return语句将停止执行函数并将控制权返回给它调用的上下文,在本例中为行:
print check_symmetric(a,tol=1e-8)
这意味着您的代码现在的方式,最后两行永远不会被执行,因为执行的上下文已经回到函数之外。这就是为什么你没有看到第二份印刷声明的原因。
答案 1 :(得分:0)
在最后两行之前有const currentMessagesForId = R.curry((id, msgs) =>
R.compose(
R.values,
R.map(R.compose(R.head, R.sort(R.descend(R.prop('sendDate'))))),
R.groupBy(m => m.sender.id !== id ? m.sender.id : m.recipient.id)
)(msgs))
currentMessagesForId(currentUserId, rawMessages)
。该函数将在该点返回,并且永远不会执行这些行。这就是他们无法接触的原因。
很可能你想把那条线移到最后?