⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numpy.i

📁 一个人工神经网络的程序。 文档等说明参见http://aureservoir.sourceforge.net/
💻 I
📖 第 1 页 / 共 4 页
字号:
  }  /* Require the given PyArrayObject to to be FORTRAN ordered.  If the   * the PyArrayObject is already FORTRAN ordered, do nothing.  Else,   * set the FORTRAN ordering flag and recompute the strides.   */  int require_fortran(PyArrayObject* ary)  {    int success = 1;    int nd = array_numdims(ary);    int i;    if (array_is_fortran(ary)) return success;    /* Set the FORTRAN ordered flag */    ary->flags = NPY_FARRAY;    /* Recompute the strides */    ary->strides[0] = ary->strides[nd-1];    for (i=1; i < nd; ++i)      ary->strides[i] = ary->strides[i-1] * array_size(ary,i-1);    return success;  }}/* Combine all NumPy fragments into one for convenience */%fragment("NumPy_Fragments", "header",	  fragment="NumPy_Backward_Compatibility",	  fragment="NumPy_Macros",	  fragment="NumPy_Utilities",	  fragment="NumPy_Object_to_Array",	  fragment="NumPy_Array_Requirements") { }/* End John Hunter translation (with modifications by Bill Spotz) *//* %numpy_typemaps() macro * * This macro defines a family of 41 typemaps that allow C arguments * of the form * *     (DATA_TYPE IN_ARRAY1[ANY]) *     (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1) *     (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1) * *     (DATA_TYPE IN_ARRAY2[ANY][ANY]) *     (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2) *     (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2) * *     (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY]) *     (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3) *     (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3) * *     (DATA_TYPE INPLACE_ARRAY1[ANY]) *     (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1) *     (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1) * *     (DATA_TYPE INPLACE_ARRAY2[ANY][ANY]) *     (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2) *     (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2) * *     (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY]) *     (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3) *     (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3) *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3) * *     (DATA_TYPE ARGOUT_ARRAY1[ANY]) *     (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1) *     (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1) * *     (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY]) * *     (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY]) * *     (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1) *     (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1) * *     (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2) *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2) *     (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2) *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2) * *     (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3) *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3) *     (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3) *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3) * * where "DATA_TYPE" is any type supported by the NumPy module, and * "DIM_TYPE" is any int-like type suitable for specifying dimensions. * The difference between "ARRAY" typemaps and "FARRAY" typemaps is * that the "FARRAY" typemaps expect FORTRAN ordering of * multidimensional arrays.  In python, the dimensions will not need * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1" * typemaps).  The IN_ARRAYs can be a numpy array or any sequence that * can be converted to a numpy array of the specified type.  The * INPLACE_ARRAYs must be numpy arrays of the appropriate type.  The * ARGOUT_ARRAYs will be returned as new numpy arrays of the * appropriate type. * * These typemaps can be applied to existing functions using the * %apply directive.  For example: * *     %apply (double* IN_ARRAY1, int DIM1) {(double* series, int length)}; *     double prod(double* series, int length); * *     %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2) *           {(int rows, int cols, double* matrix        )}; *     void floor(int rows, int cols, double* matrix, double f); * *     %apply (double IN_ARRAY3[ANY][ANY][ANY]) *           {(double tensor[2][2][2]         )}; *     %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY]) *           {(double low[2][2][2]                )}; *     %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY]) *           {(double upp[2][2][2]                )}; *     void luSplit(double tensor[2][2][2], *                  double low[2][2][2], *                  double upp[2][2][2]    ); * * or directly with * *     double prod(double* IN_ARRAY1, int DIM1); * *     void floor(int DIM1, int DIM2, double* INPLACE_ARRAY2, double f); * *     void luSplit(double IN_ARRAY3[ANY][ANY][ANY], *                  double ARGOUT_ARRAY3[ANY][ANY][ANY], *                  double ARGOUT_ARRAY3[ANY][ANY][ANY]); */%define %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)/************************//* Input Array Typemaps *//************************//* Typemap suite for (DATA_TYPE IN_ARRAY1[ANY]) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DATA_TYPE IN_ARRAY1[ANY]){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DATA_TYPE IN_ARRAY1[ANY])  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[1] = { $1_dim0 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 1) ||      !require_size(array, size, 1)) SWIG_fail;  $1 = ($1_ltype) array_data(array);}%typemap(freearg)  (DATA_TYPE IN_ARRAY1[ANY]){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[1] = { -1 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 1) ||      !require_size(array, size, 1)) SWIG_fail;  $1 = (DATA_TYPE*) array_data(array);  $2 = (DIM_TYPE) array_size(array,0);}%typemap(freearg)  (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[1] = {-1};  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 1) ||      !require_size(array, size, 1)) SWIG_fail;  $1 = (DIM_TYPE) array_size(array,0);  $2 = (DATA_TYPE*) array_data(array);}%typemap(freearg)  (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DATA_TYPE IN_ARRAY2[ANY][ANY]) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DATA_TYPE IN_ARRAY2[ANY][ANY]){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DATA_TYPE IN_ARRAY2[ANY][ANY])  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[2] = { $1_dim0, $1_dim1 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 2) ||      !require_size(array, size, 2)) SWIG_fail;  $1 = ($1_ltype) array_data(array);}%typemap(freearg)  (DATA_TYPE IN_ARRAY2[ANY][ANY]){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[2] = { -1, -1 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 2) ||      !require_size(array, size, 2)) SWIG_fail;  $1 = (DATA_TYPE*) array_data(array);  $2 = (DIM_TYPE) array_size(array,0);  $3 = (DIM_TYPE) array_size(array,1);}%typemap(freearg)  (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[2] = { -1, -1 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 2) ||      !require_size(array, size, 2)) SWIG_fail;  $1 = (DIM_TYPE) array_size(array,0);  $2 = (DIM_TYPE) array_size(array,1);  $3 = (DATA_TYPE*) array_data(array);}%typemap(freearg)  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[2] = { -1, -1 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 2) ||      !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;  $1 = (DATA_TYPE*) array_data(array);  $2 = (DIM_TYPE) array_size(array,0);  $3 = (DIM_TYPE) array_size(array,1);}%typemap(freearg)  (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[2] = { -1, -1 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 2) ||      !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;  $1 = (DIM_TYPE) array_size(array,0);  $2 = (DIM_TYPE) array_size(array,1);  $3 = (DATA_TYPE*) array_data(array);}%typemap(freearg)  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY]) */%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,	   fragment="NumPy_Macros")  (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY]){  $1 = is_array($input) || PySequence_Check($input);}%typemap(in,	 fragment="NumPy_Fragments")  (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])  (PyArrayObject* array=NULL, int is_new_object=0){  npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,						   &is_new_object);  if (!array || !require_dimensions(array, 3) ||      !require_size(array, size, 3)) SWIG_fail;  $1 = ($1_ltype) array_data(array);}%typemap(freearg)  (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY]){  if (is_new_object$argnum && array$argnum)    { Py_DECREF(array$argnum); }}/* Typemap suite for (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, *                    DIM_TYPE DIM3) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -