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

时间:2018-09-16 04:41:41

标签: python numpy typeerror

当我尝试对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)))

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

1 个答案:

答案 0 :(得分:0)

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

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