【问题标题】:How do I create a contourplot with a custom function?如何使用自定义函数创建等高线图?
【发布时间】:2021-12-22 07:41:26
【问题描述】:

我在网上看到很多创建轮廓图的例子,如下所示

import numpy as np
xlist = np.linspace(-3.0, 3.0, 3)
ylist = np.linspace(-3.0, 3.0, 4)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
cp = plt.contourf(X, Y, Z)
plt.colorbar(cp)

ax.set_title('Contour Plot')
ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')
plt.show()

现在这很简单,因为 numpy 中的 sqrt 函数将很乐意接受网格输入并评估所有兴趣点。但是,我不明白的是,如果我有自己的功能,我将如何做到这一点。例如,假设我有一个更复杂的函数,lambda nllh x1,x2 : my_function(x1,x2),它可以任意复杂,但接受两个标量,它本身返回一个标量。

当我尝试用我的函数以相同的方式实现它时(即上面相同的代码,除了 Z=nllh(X,Y) 行),我收到一个错误,输入数组维度没有任何意义,因为这个函数并非旨在将网格网格作为输入。我怎样才能纠正这个问题或让 python 理解函数 Z=nllh(X,Y) 需要独立评估网格值对而不是网格本身?

谢谢

【问题讨论】:

标签: python numpy contour


【解决方案1】:

由 Tadhg McDonald-Jensen 在评论中回答。用np.vectorize(nllh)创建一个新函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多