迅猛教程,科学总结包

 百家乐-操作     |      2020-02-16 04:50

越来越多详细音信可查阅公布表达。

_cos_doubles.pyx

""" Example of wrapping a C function that takes C double arrays as input using the Numpy declarations from Cython """# import both numpy and the Cython declarations for numpyimport numpy as npcimport numpy as np# if you want to use the Numpy-C-API from Cython# (not strictly necessary for this example)np.import_array()# cdefine the signature of our c functioncdef extern from "cos_doubles.h": void cos_doubles (double * in_array, double * out_array, int size)# create the wrapper code, with numpy type annotationsdef cos_doubles_func(np.ndarray[double, ndim=1, mode="c"] in_array not None, np.ndarray[double, ndim=1, mode="c"] out_array not None): cos_doubles(<double*> np.PyArray_DATA, <double*> np.PyArray_DATA(out_array), in_array.shape[0])

NumPy 1.18.0 已揭橥。除了平时的荒诞修复之外,此版本还清理并记录新的轻巧C-API,使大气旧版本弃用,并校正了文书档案的外观。其援助的 Python 版本为 3.5-3.8,那也是最后三个支撑 Python 3.5 的 NumPy 公布生龙活虎体系。

cos_doubles.h

#ifndef _COS_DOUBLES_H#define _COS_DOUBLES_Hvoid cos_doubles(double * in_array, double * out_array, int size);#endif
  • np.fromfile 和 np.fromstring 在错误数据中校出错
  • 在 ma.fill_value大校非标准化量数组弃用为 fill values

  • 弃用 PyArray_As1DPyArray_As2DPyArray_As1D

  • 弃用 np.alen

  • numpy.ma.mask_cols 和 numpy.ma.mask_row 的axis 参数已弃用

  • ...

cos_doubles.c

#include "cos_doubles.h"#include <math.h>/* Compute the cosine of each element in in_array, storing the result in * out_array. */void cos_doubles(double * in_array, double * out_array, int size){ int i; for(i=0;i<size;i++){ out_array[i] = cos(in_array[i]); }}

新功能

编写翻译打包

在指令行窗口中步入到上述文件所在同级目录,输入:

>> python setup.py build_ext -i

参数-i表示inplace,即在同级目录下生成Python可调用模块pyd文件。

build过程如下:

图片 1build过程

接下来能够望见在同级目录下多了多个公文:

  • _cos_doubles.c,使用Python C-API自动包装生成的C文件。
  • cos_doubles.pyx,Python可一向调用的module文件,也正是终相当的大家所须要的事物。

接下去测试一下:

# file: test.pyimport cos_doublesimport numpy as npimport matplotlib.pyplot as plta = np.linspace(-5, 5, 100)b = np.empty_likecos_doubles.cos_doubles_funcplt.plotplt.show()

运营效果如下图所示:

图片 2运营效果

[1] SciPy lecture notes: 2.8. Interfacing with C[2] Working with NumPy[3] Python中使用C代码:以NumPy为例 [4] Cython学习

  • numpy.random 的 C-API 已经定义并记下。
  • 与 64 位 BLAS 和 LAPACK 库链接的主干底蕴构造。
  • 比超多文书档案方面包车型大巴修改。
  • Python 2.7 + NumPy 1.11.0 + Cython 0.24 版本上实行。