Я новичок в Python и Spyder, и я пытаюсь цитонизировать цикл for.Я использую Spyder 3.2.7 из навигатора anaconda, поэтому я запускаю код, просто нажимая зеленую треугольную кнопку.
Мой файл pyx выглядит так:
import numpy as np
def saluti():
print('hello world')
def new_sum(double[:] X, double[:] beta, double[:,:] theta):
cdef int N = X.shape[0]
cdef double[:] Y = np.zeros(N)
cdef int i, j
for i in range(N):
for j in range(i):
Y[i] += beta[j] * np.exp(-theta[i, j]*(X[i] - X[j]))
return Y
Пока мой файл py:
import numpy as np
import pyximport
pyximport.install()
from prova_cythonn import saluti, new_sum
def old_sum (x, beta, theta):
N = x.shape[0]
y = np.zeros(N)
for i in range(N):
for j in range(i):
y[i] = y[i] + beta[j]*np.exp(-theta[i, j]*(x[i] - x[j]))
return y
... do stuff (like print(np.sum(old_sum) or print(np.sum(new_sum)) ...
При импорте только «saluti» я не получаю сообщение об ошибке и получаю сообщение «hello world», напечатанное в консоли Ipython.Если я пытаюсь импортировать функцию new_sum, я получаю ImportError: не могу импортировать имя 'new_sum' Мне кажется, что проблема в том, что если я изменяю и сохраняю pyx, сбережения не «читаются» при запуске py