相关疑难解决方法(0)

n维数组的numpy二阶导数

我有一组模拟数据,我想在n维中找到最低的斜率.数据的间距沿着每个维度是恒定的,但不是全部相同(为了简单起见,我可以改变它).

我可以忍受一些数字不准确,尤其是边缘.我非常希望不生成样条并使用该衍生物; 只要原始价值就足够了.

可以numpy使用该numpy.gradient()函数计算一阶导数.

import numpy as np

data = np.random.rand(30,50,40,20)
first_derivative = np.gradient(data)
# second_derivative = ??? <--- there be kudos (:
Run Code Online (Sandbox Code Playgroud)

这是关于拉普拉斯与粗麻布矩阵的评论; 这不再是一个问题,而是为了帮助理解未来的读者.

我使用2D函数作为测试用例来确定阈值以下的"最平坦"区域.以下图片显示了使用以下最小值second_derivative_abs = np.abs(laplace(data))和最小值之间的结果差异:

second_derivative_abs = np.zeros(data.shape)
hess = hessian(data)
# based on the function description; would [-1] be more appropriate? 
for i in hess[0]: # calculate a norm
    for j in i[0]:
        second_derivative_abs += j*j
Run Code Online (Sandbox Code Playgroud)

色标表示功能值,箭头表示一阶导数(梯度),红点表示最接近零的点,红线表示阈值.

数据的生成器函数是( 1-np.exp(-10*xi**2 - yi**2) )/100.0使用生成的xi,yi生成的np.meshgrid.

拉普拉斯:

拉普拉斯解决方案

黑森州:

粗麻布解决方案

python numpy derivative hessian-matrix

16
推荐指数
2
解决办法
2万
查看次数

标签 统计

derivative ×1

hessian-matrix ×1

numpy ×1

python ×1