использование numpy в цитоне: определение ndarray datatype/ndims

Я пытаюсь написать некоторый код цитона, чтобы сделать вычисления с массивами 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
)

8
задан skaffman 31 July 2010 в 18:31
поделиться