ValueError:错误的节点或字符串



我不知道为什么我不能像下面这样使用np.matrixmatrix:

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)

我一直得到这个错误:

ValueError                                Traceback (most recent call last)
Cell In[38], line 19
17 print(x)
18 print(y)
---> 19 X = np.matrix('x; y')
20 O = A @ X - B 
21 print(O)
ValueError: malformed node or string on line 1: <ast.Name object at 0x2dc0210>

来自np.matrix的文档:

如果data是字符串,则将其解释为带逗号或的矩阵空格分隔列,分号分隔行。

这意味着在字符串中传递的数据必须是字面值(11.5),而不是变量(或名称)。

使用f字符串代替:

X = np.matrix(f'{x}; {y}')

错误:

ValueError: malformed node or string on line 1: <ast.Name object at 0x2dc0210>
你得到的

是因为numpy使用ast.literal_eval来创建矩阵(见这里)。

变量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)

最新更新