是否可以强制 scipy 的插值输出具有特定 numpy dtype 的数组?
例如,从 scipy.interpolate.Rbf() 输出一个 float32 数组?
是否可以强制 scipy 的插值输出具有特定 numpy dtype 的数组?
例如,从 scipy.interpolate.Rbf() 输出一个 float32 数组?
不,你总是得到 float64 类型。对于其他任何事情,在收到输出后使用.astype(np.float32)
等进行转换。
我以 Rbf 为例:它对输入数据所做的第一件事就是将其转换np.float_
为 float64 的别名。如此处所示:
self.xi = np.asarray([np.asarray(a, dtype=np.float_).flatten()
for a in args[:-1]])
插值的节点是从中计算出来的,所以它们也是 float64 的。Rbf 对象的调用方法不会转换输入数据,但 NumPy 无论如何都会在 中执行此操作np.dot
,因为数据类型为self.nodes
:
return np.dot(self._function(r), self.nodes).reshape(shp)