我有很多C函数,我想从python中调用它们.cython似乎是要走的路,但我无法真正找到一个如何做到这一点的例子.我的C函数看起来像这样:
void calculate_daily ( char *db_name, int grid_id, int year,
double *dtmp, double *dtmn, double *dtmx,
double *dprec, double *ddtr, double *dayl,
double *dpet, double *dpar ) ;
Run Code Online (Sandbox Code Playgroud)
我想要做的就是指定前三个参数(一个字符串和两个整数),并恢复8个numpy数组(或python列表.所有双数组都有N个元素).我的代码假设指针指向已经分配的内存块.此外,生成的C代码应该链接到一些外部库.
我只想用最简单的术语插入3D数据集.线性插值,最近邻,所有这些就足够了(这是从一些算法开始,所以不需要准确的估计).
在新的scipy版本中,像griddata这样的东西会很有用,但是目前我只有scipy 0.8.所以我有一个"立方体"(data[:,:,:],(NixNjxNk))数组,以及一个相同大小的标志(flags[:,:,:,],True或False)数组.我想插入数据元素的数据,其中flag的对应元素为False,例如使用数据中最近的有效数据点,或者"close by"点的某种线性组合.
数据集中至少有两个维度可能存在较大的间隙.除了使用kdtrees或类似编码完整的最近邻算法之外,我无法真正找到通用的N维最近邻插值器.
我必须反转一个大的稀疏矩阵.我无法摆脱矩阵求逆,唯一的捷径就是只能了解主对角线元素,忽略非对角线元素(我宁愿不这样做,但作为一种解决方案,它是可以接受的).
我需要反转的矩阵通常很大(40000*40000),并且只有少量非非零对角线.我目前的做法是建立一切稀疏,然后
posterior_covar = np.linalg.inv ( hessian.todense() )
这显然需要很长时间和充足的记忆.
任何提示,或者只是耐心或使问题变小?
假设我有一个快速的时间序列x,通过时间进行特定测量.我也有一定程度的不确定性sx(比如x特定区间的标准偏差).我只是想基本填补时间序列,但我希望传播测量不确定度,并希望插值不确定性.在过去,我使用Tikhonov正则化来实现这一点(即添加平滑约束),但我宁愿只使用scipy中的开箱即用例程.我可以看到scipy样条插值例程采用平滑参数(这将在sx此处导出),但它不计算插值序列的不确定性.
我问,因为我不认为这是一个微不足道的计算,看看是否有人知道这种能力是否可用.
我倾向于在我的 Matplotlib (v1.3.1) 图中使用以下轴选项:
ax.spines["top"].set_visible(False)
ax.spines["bottom"].set_visible(True)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_visible(True)
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
ax.tick_params(axis="both", which="both", bottom="off", top="off",
labelbottom="on", left="off", right="off", labelleft="on")
Run Code Online (Sandbox Code Playgroud)
这在抓取当前轴后工作正常,但我想知道我是否可以通过在rcParams.
我在看起来像这样的模块中有一个函数(以防有人感兴趣,就是这个函数)
MODULE MYMODULE
IMPLICIT NONE
! Some random stuff
CONTAINS
CHARACTER*255 FUNCTION strtok ( source_string, delimiters )
[...]
END FUNCTION strtok
SUBROUTINE DO_SOMETHING ( )
CHARACTER(LEN=255) :: strtok
[...] !
END SUBROUTINE DO_SOMETHING
END MODULE MYMODULE
Run Code Online (Sandbox Code Playgroud)
该strtok函数是C的字符串标记器的一个版本,我将在DO_SOMETHING子例程中使用此函数。我需要定义strtok,否则gfortran抱怨它未定义。但是,如果我这样做了,然后编译我的代码并将其链接到主程序,则链接器会抱怨未定义对的引用strtok_。我不知道为什么会这样,因为它们都在同一个模块中并且应该可见。同一模块中的其他函数和子例程不存在此问题。这与返回字符*的功能有关吗?
我试图了解如何在 pymc 中使用黑盒似然函数。基本上,这是解释here。我尝试使用一个非常简单的 Python 模型(一个双逻辑函数)自行实现它,并且没有梯度。除了我提到的链接中的代码,它围绕对数似然函数设置 theano 包装器,我有以下代码
# Define the model
def my_model(p, t, m_m, m_M):
"""An simple double logistic model"""
return m_m + (m_M - m_m) * (
1.0 / (1 + np.exp(-p[0] * (t - p[1] * 365)))
+ 1.0 / (1 + np.exp(p[2] * (t - p[3] * 365)))
- 1
)
# The loglikelihood function
def log_lklhood(theta, t, data, sigma):
"""Normal log-likelihoood"""
y_pred = my_model(theta, t, data.max(), data.min())
retval = -(0.5 / sigma ** …Run Code Online (Sandbox Code Playgroud)