我正在尝试定义一个简单函数ddf()
,该函数在输入2D向量x
作为输入的情况下,输出特定数学函数的Hessian矩阵:
import numpy as np
def ddf(x):
dd11 = 2*x[1]+8
dd12 = 2*x[0]-8*x[1]-8
dd21 = 2*x[0]-8*x[1]-8
dd22 = -8*x[0]+2
return np.array([[dd11, dd12], [dd21, dd22]])
x0 = np.zeros((2,1))
G = ddf(x0)
print(G)
我希望输出是2x2正方形阵列/矩阵,但是它产生的似乎是4x1列。 仍然陌生,使用
G.shape
产量(2L,2L,1L),而不是预期的(2L,2L)。 我的目标是获得2x2形式的G。有人可以协助吗?谢谢
答案 0 :(得分:1)
我对python还是很陌生,但是我认为这会起作用:
let keysArray = [String](usernameScoreDict.keys)
let valuessArray = [String](usernameScoreDict.values)
根据需要生成(2,2)。
答案 1 :(得分:1)
您对函数ddf()
的输入是2x1矩阵,这意味着x [0]和x [1]的全部都是矢量,而不是定标器(浮点数或整数)。因此,输出矩阵的每个元素都是1尺寸的向量,因为如果将数组传递给函数,则numpy中的所有操作都会明智地应用元素。
您可以做几件事:
x0 = np.zeros((2,))
中将输入更改为形状(2,)。G.reshape((2,2))
来删除多余的尺寸。