使用np.matrix('x; y')触发ValueError: malformed node or string异常
问题原因与解决方法
错误出在第19行X = np.matrix('x; y'):numpy通过字符串构造np.matrix时,只会解析字符串里的字面量数值,不会识别代码中定义的变量x和y。它把字符串里的x、y当成了非数值符号,所以触发解析错误。
解决办法
直接用变量值构造矩阵,有两种常用方式:
方式1:通过列表嵌套构造
把x和y放到列表里,直接传入np.matrix:
X = np.matrix([[x], [y]])
方式2:用格式化字符串代入变量值
把变量x、y的实际值嵌入字符串中:
X = np.matrix(f'{x}; {y}')
修正后的完整代码
import numpy as np A = np.matrix('3 -5; 2 7') print(A) B = np.matrix('13; 81') print(B) A_det = np.linalg.det(A) print(A_det) X_m = np.matrix(A) X_m[:, 0] = B print(X_m) Y_m = np.matrix(A) Y_m[:, 1] = B print(Y_m) x = np.linalg.det(X_m) / A_det y = np.linalg.det(Y_m) / A_det print(x) print(y) # 修改这里,用列表构造矩阵 X = np.matrix([[x], [y]]) O = A @ X - B print(O)
运行修正后的代码,就能正常输出结果,验证克莱姆法则的计算正确性。
内容的提问来源于stack exchange,提问作者GGv1ken
相关产品推荐
相关产品推荐

