问题描述
我正在尝试使用 openmdao.components.interp_util.interp 中的 InterpnD 函数。
将它用于多维数据没问题 - 我可以毫无问题地插入 3-D 张量。但是我也想用于一维数据。不确定我做错了什么,但是当我尝试做一些非常简单的事情时,例如
import numpy as np
from openmdao.components.interp_util.interp import InterpnD
x = np.array([0.,1.,2.,3.,4.])
y = x**2
f = InterpnD(points=x,values=y)
我收到以下错误消息:
ValueError: There are 5 point arrays,but values has 1 dimensions
查看 InterpnD 源代码,我似乎应该能够将 x 和 y 作为简单的一维数组。
Parameters
----------
points : ndarray or tuple of ndarray of float,with shapes (m1,),...,(mn,)
The points defining the regular grid in n dimensions. For 1D interpolation,this
can be an ndarray.
values : array_like,shape (m1,mn,...)
x 是一维数组,y 也是一维数组。
解决方法
这看起来像是 OpenMDAO V3.7.0 中与输入错误检查相关的错误。这是一个解决方法。如果将一维表点放入列表中,则可以正常工作:
f = InterpND(points=[x],values=y)