小编Jos*_*ose的帖子

用cython简单包装C代码

我有很多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代码应该链接到一些外部库.

python numpy cython

43
推荐指数
2
解决办法
2万
查看次数

填补numpy数组中的空白

我只想用最简单的术语插入3D数据集.线性插值,最近邻,所有这些就足够了(这是从一些算法开始,所以不需要准确的估计).

在新的scipy版本中,像griddata这样的东西会很有用,但是目前我只有scipy 0.8.所以我有一个"立方体"(data[:,:,:],(NixNjxNk))数组,以及一个相同大小的标志(flags[:,:,:,],True或False)数组.我想插入数据元素的数据,其中flag的对应元素为False,例如使用数据中最近的有效数据点,或者"close by"点的某种线性组合.

数据集中至少有两个维度可能存在较大的间隙.除了使用kdtrees或类似编码完整的最近邻算法之外,我无法真正找到通用的N维最近邻插值器.

python interpolation numpy matplotlib scipy

12
推荐指数
2
解决办法
6767
查看次数

用scipy反转大的稀疏矩阵

我必须反转一个大的稀疏矩阵.我无法摆脱矩阵求逆,唯一的捷径就是只能了解主对角线元素,忽略非对角线元素(我宁愿不这样做,但作为一种解决方案,它是可以接受的).

我需要反转的矩阵通常很大(40000*40000),并且只有少量非非零对角线.我目前的做法是建立一切稀疏,然后

posterior_covar = np.linalg.inv ( hessian.todense() )

这显然需要很长时间和充足的记忆.

任何提示,或者只是耐心或使问题变小?

python numpy scipy

5
推荐指数
1
解决办法
3340
查看次数

插值和估计不确定性

假设我有一个快速的时间序列x,通过时间进行特定测量.我也有一定程度的不确定性sx(比如x特定区间的标准偏差).我只是想基本填补时间序列,但我希望传播测量不确定度,并希望插值不确定性.在过去,我使用Tikhonov正则化来实现这一点(即添加平滑约束),但我宁愿只使用scipy中的开箱即用例程.我可以看到scipy样条插值例程采用平滑参数(这将在sx此处导出),但它不计算插值序列的不确定性.

我问,因为我不认为这是一个微不足道的计算,看看是否有人知道这种能力是否可用.

python interpolation numpy scipy

5
推荐指数
1
解决办法
1203
查看次数

我可以在 rcParams 中设置脊椎和刻度线吗?

我倾向于在我的 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.

python matplotlib

5
推荐指数
1
解决办法
1117
查看次数

为什么此函数在模块内部声明,然后在链接器看不到的同一模块中的其他地方使用?

我在看起来像这样的模块中有一个函数(以防有人感兴趣,就是这个函数)

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_。我不知道为什么会这样,因为它们都在同一个模块中并且应该可见。同一模块中的其他函数和子例程不存在此问题。这与返回字符*的功能有关吗?

fortran gfortran

3
推荐指数
1
解决办法
1835
查看次数

黑盒似然示例

我试图了解如何在 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)

python bayesian pymc

3
推荐指数
1
解决办法
276
查看次数

标签 统计

python ×6

numpy ×4

scipy ×3

interpolation ×2

matplotlib ×2

bayesian ×1

cython ×1

fortran ×1

gfortran ×1

pymc ×1