Я пытаюсь написать некоторый код цитона, чтобы сделать вычисления с массивами numpy. Cython, кажется, не нравится [] используемый во всех примерах, которые я видел для определения типа данных и количества размеров.
Например, у меня есть файл test.pyx:
cimport numpy as np
import numpy as np
ctypedef np.ndarray[np.float64_t, ndim=2] mymatrix
cpdef mymatrix hat (mymatrix x):
a = np.zeros((3,3));
a[0,1] = x[2,0];
a[0,2] = -x[1,0];
a[1,2] = x[0,0];
a[1,0] = -x[2,0];
a[2,0] = x[1,0];
a[2,1] = -x[0,0];
return a;
Я компилирую это использование setup.py (см. конец сообщения), который я выполняю с "Python setup.py build_ext - оперативный"
Я получаю следующий вывод:
running build_ext
cythoning test.pyx to test.c
Error converting Pyrex file to C:
------------------------------------------------------------
...
cimport numpy as np
import numpy as np
ctypedef np.ndarray[np.float64_t, ndim=2] mymatrix
^
------------------------------------------------------------
test.pyx:4:42: Syntax error in ctypedef statement
тогда как, если я удаляю" [np.float64_t, ndim=2]" часть, она хорошо работает.
У кого-либо есть какие-либо идеи?
Относительно моей системной установки: ОС: Windows XP
полная, полная pythonxy установка, версия 2.6.5.1 (последний в этой точке)
pythonxy, предположительно, идет с цитоном, но я закончил тем, что установил версию 0.12.1 цитона для Python 2.6 от этого сайта: http://www.lfd.uci.edu/~gohlke/pythonlibs/#cython
Я подозреваю, что так или иначе пропускаю путь или что-то: Я решил некоторые проблемы путем явного добавления numpy каталога заголовочного файла к включать пути, используемому mingw (см. setup.py файл ниже),
вот то, что setup.py файл я упомянул:
from distutils.core import setup
from distutils.extension import Extension
from distutils.sysconfig import get_python_inc
from Cython.Distutils import build_ext
import os.path
inc_base = get_python_inc( plat_specific=1 );
incdir = os.path.join( get_python_inc( plat_specific=1 ), );
#libraries=['math'],
ext_modules = [Extension("test",
["test.pyx"],
include_dirs = [
os.path.join(inc_base,'..\\Lib\\site-packages\\numpy\\core\\include\\numpy'),
]
)
]
setup(
name = 'test',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)