代码之家  ›  专栏  ›  技术社区  ›  Paul Panzer

randomkit.h发生了什么,或者如何迁移到最新的numpy.random c/cython api

  •  1
  • Paul Panzer  · 技术社区  · 5 年前

    我有一个cython扩展模块,它使用numpy.random的一个小子集。它在16.2

    https://github.com/numpy/numpy/commit/d8e145743813545b11be1f588f4fedb88addf059#diff-51bde9aa0f8211110b1c0aabe79fec5b

    虽然这些更改对python用户很温和,但它们完全破坏了我的cython代码。

    据我所知,从17.0开始:

    1. randomkit.h 不见了。
    2. rk_* mtrand.cpython-<platform>.so ).

    问题:

    1. 对迁移(指针、建议)有帮助吗?

    import cython
    import numpy as np
    cimport numpy as np
    
    cdef extern from "randomkit.h":
        ctypedef struct rk_state:
            unsigned long key[624]
            < snip >
            double p4
    
        void rk_seed(unsigned long seed, rk_state *state)
        unsigned long RK_MAX
        unsigned long rk_interval(unsigned long max, rk_state *state)
        unsigned long rk_random(rk_state *state)
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Paul Panzer    5 年前

    randomkit.h 它所包含的接口 retired 为新的基础设施腾出空间。不过,在编写本文时,还不清楚新的api是否会稳定/得到官方支持 documented 在里面 some detail 确实如此。