Tag: cython

как сделать копии объектов Cython?

У меня есть простой класс Cython, где я определяю, что означает сравнение двух объектов для равенства ( == ): cdef class MyClass: cdef public int a cdef public int b def __init__(self, a, b): self.a = a self.b = b def __richcmp__(self, MyClass other, int op): if op == 2: if (self.a == other.a) and […]

Исчисление по памяти (массив python)

Я намерен использовать memoryview в массиве python: … cdef double[:, :] a = np.array([[1, 1, 0]]) cdef double[:, :] c = 0,5 * a * aT Но это вызвало ошибку: Недопустимые типы операндов для '*' (double; double [:,:]) Что я могу сделать в этой ситуации?

массивы массивов в цитоне

Как можно объявить массив массивов в cython? Точнее, я хочу построить (объявить и затем инициализировать) матрицу m по n, называть ее A, в которой каждая запись [i, j] является одномерным массивом удвоений (длины min(i,j) , заполненный нулями) формы cdef np.ndarray[np.double_t, ndim=1] A[i,j] A[i,j] = np.zeros((min(i,j)), dtype=np.double) Для (m, n) = (4,3) print A должен возвращать […]

Ошибка компиляции cython: множественное определение функций

Я создаю файл ac с именем test.c с двумя функциями, определенными следующим образом: #include<stdio.h> void hello_1(void){ printf("hello 1\n"); } void hello_2(void){ printf("hello 2\n"); } После этого я создаю test.pyx следующим образом: import cython cdef extern void hello_1() Файл настройки выглядит следующим образом: from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext setup(cmdclass={'buld_ext':build_ext}, […]

Цитонизация для циклов, которые перебирают генераторы

У меня есть код Python, который имеет множество циклов, которые потребляют данные от генераторов Python. Некоторые также возвращают обработанные данные. Это узкое место, и я хочу ускорить эту часть и думал об использовании Cython. Каков рекомендуемый способ работы с генераторами и выход. я бы хотел Преобразование генераторов Python в Cython без копий данных Сделать Cython […]

Wrapping / Casting C struct в Cython для класса Python

Я только начинаю разбираться с Cython, пытаясь обернуть некоторые структуры из библиотеки C методам и классам Python. То, что я действительно не понимаю, – это то, как работать с (инициализированными) структурами C в соответствующий класс Python. Что мне здесь не хватает: Фрагмент из файла заголовка C: struct test_struct { int _something; complex_struct* _another; }; typedef […]

Как условно объявить код в соответствии с версией Python в Cython?

У меня есть следующий заголовок pxd, который добавляет регулярный модуль Python: #!/usr/bin/env python # coding: utf-8 cimport cython @cython.locals(media_type=unicode, format=unicode, charset=unicode, render_style=unicode) cdef class BaseRenderer(object): """ All renderers should extend this class, setting the `media_type` and `format` attributes, and override the `.render()` method. """ @cython.locals(indent=int, separators=tuple) cpdef object render(self, dict data, accepted_media_type=?, renderer_context=?) @cython.locals(compact=bool, ensure_ascii=bool, […]

Оптимизация кода Cython для вычисления дисперсии numpy

Я пытаюсь оптимизировать свой код на языке cython, и, похоже, у вас есть немного возможностей для улучшения, это часть профиля из% prun extension в ноутбуке IPython: 7016695 function calls in 18.475 seconds Ordered by: internal time ncalls tottime percall cumtime percall filename:lineno(function) 400722 7.723 0.000 15.086 0.000 _methods.py:73(_var) 814815 4.190 0.000 4.190 0.000 {method 'reduce' […]

Python Setup.py Build_Ext –inplace

Я создаю программу Cython (называемую ex. testpackage) с помощью команды: python setup.py build_ext –inplace В папке, например /home/USER/Documents/testpackage/ . Сборка выполняется успешно, но когда я подключаюсь к другой папке, я больше не могу использовать модуль testpackage . Есть ли другая команда, которую я могу запустить вместо –inplace чтобы я мог import testpackage в Python в […]

Как вывести массив numpy из c-массива в cython?

cpdef myf(): # pd has to be ac array. # Because it will then be consumed by some c function. cdef double pd[8000] # Do something with pd … # Get a memoryview. cdef double[:] pd_view = pd # Coercion the memoryview to numpy array. Not working. ret = np.asarray(pd) return ret Я бы хотел, […]

Python - лучший язык программирования в мире.