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