numpy数组函数返回不一致的形状

时间:2018-11-24 12:50:17

标签: python numpy

我正在尝试定义一个简单函数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。有人可以协助吗?谢谢

2 个答案:

答案 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中的所有操作都会明智地应用元素。 您可以做几件事:

  • 您似乎希望x [0],x [1]为标量,因此请在x0 = np.zeros((2,))中将输入更改为形状(2,)。
  • 或将输出重塑为G.reshape((2,2))来删除多余的尺寸。