关于 numpy:我不能用 Python 中的浮点数来划分矩阵吗?

Can I not divide a matrix by a float in Python?

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

TypeError: only integer scalar arrays can be converted to a scalar index

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

我的代码在这里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)))

测试代码时,执行除法操作报错:

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

如果有人好奇它是什么方程,它就是这个人的一部分:></p>
<div class=


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

我还建议将 htemp 项分解为不同的变量(如 T1 = hess、T2= 1 q^TH q/p^Tq 等),然后将它们相加,这样代码就更易于跟踪了。