Estoy tratando de comprender weave.inline para ajustar el código C en mis programas de Python. El código de abajo simplemente toma la matriz y sistemas múltiples Numpy todos sus elementos por 2.¿Cómo uso scipy.weave.inline junto con bibliotecas de C externas?
inl.py
import numpy
import scipy.weave
a = numpy.array([1.0, 2.0, 3.0])
N = a.shape[0]
print a
code = \
"""
int i;
for(i = 0; i < N; i++)
{
a[i] = a[i] * 2;
}
"""
scipy.weave.inline(code, ['a','N'])
print a
Entonces quiero realizar algunas funciones de código en línea a bibliotecas externas. Que sea la multiplicación trivial por 2. Así se crea dos archivos:
mult.c
#include "mult.h"
float mult(float n)
{
return n * 2;
}
mult.h
float inc(float n);
Ahora quiero utilizar la función mult en mi código en línea Pero no sé cómo puedo vincular mis archivos C con el código en línea de Python. Traté de compilar archivos C como biblioteca compartida y pasarlos como encabezados y bibliotecas en el tejido, pero fue en vano. ¿Alguna sugerencia?
He intentado con enlaces de C/Python como Cython, ctypes y SWIG.Weave parece ser la forma más sencilla de pasar matrices Numpy a C, por lo que quiero encontrar una forma de utilizar bibliotecas externas en su código. Además, ya tengo una pieza de código C en el tejido, y funciona muy bien. Gracias de todas formas. – user517893