当前位置: 代码迷 >> python >> 我不能在Python中用浮点数除矩阵吗?
  详细解决方案

我不能在Python中用浮点数除矩阵吗?

热度:97   发布时间:2023-07-14 08:43:16.0

当我尝试对Python中的方程式执行矩阵运算时,收到以下错误:

TypeError:仅整数标量数组可以转换为标量索引

我这样翻译的方式是,Python告诉我无法通过具有浮点值的矩阵运算来创建1x1矩阵,但这对我来说意义为零。

我的代码在这里:

x0 = np.array([[-1.1], [1.1]])
dfx = lambda x: np.array([-400*x[0]*x[1]+400*np.power(x[0],3)+2*x[0]-2, 200*(x[1]-np.square(x[0]))], dtype='float32')

temp = np.zeros((2,1))
gamma = np.zeros((2,1))
delta = np.zeros((2,1))
hess = np.eye(2, dtype='float32') 

deltaX = np.dot(-hess,dfx(x0))
p = t*deltaX 
temp = x0+t*deltaX
q = dfx(temp)-dfx(x0)

htemp = hess + np.dot(1 + np.divide(np.dot(np.dot(np.transpose(q,hess),q)), np.dot(np.transpose(p),q)), np.divide(np.dot(p,np.transpose(p)),np.dot(np.transpose(p),q)))

测试代码时,执行除法运算时出现错误:

print(np.divide(np.dot(np.dot(np.transpose(q,hess),q)), np.dot(np.transpose(p),q)))

如果有人对它是什么方程式感到好奇,它就是这个家伙的一部分:

问题似乎是np.transpose(q,hess)而不是np.dot(np.transpose(q),hess) ,因为前者是没有意义的。

我还建议将htemp项分解为不同的变量(例如T1 = hess,T2 = 1 + q ^ TH q / p ^ Tq,等等),然后对其求和,这样代码将更易于跟踪。