对[x,y]和[[x],[y]]使用numpy.sum()有什么区别吗?

import numpy as np

def function2(x):
    return np.sum(x**2)

def 偏导(f,x):
    h=1e-6
    grad=np.zeros_like(x)
    
    for idx in range(x.size):
        tmp_val=x[idx]
        
        x[idx]=tmp_val+h
        f1=f(x)
        x[idx]=tmp_val-h
        f2=f(x)
        grad[idx]=(f1-f2)/(2*h) 
        x[idx]=tmp_val
    return grad
        
    
x=np.array([3.,4.])
print(偏导(function2,x))

这个的结果是[6. 8.]
但如果x换成[[3.],[4.]],结果就变成[[3.0000005],[4.0000005]]了

我发现问题好像出现在 grad[idx]=(f1-f2)/(2*h) 这一行,但这行只是一步除法,后面f1和f2也不是数组,应该和x没什么关系把

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。