#python #c #numpy #cython
#python #c #numpy #cython
Вопрос:
Я пытаюсь написать функцию Cython, которая могла бы использовать объединенный dtype, включающий float32. Однако он отклоняет ввод, если не указано явно. Почему ?
Например:
cimport numpy as cnp
ctypedef fused floatdtype:
cnp.npy_float32
@cy.boundscheck(False)
@cy.wraparound(False)
cpdef void test(floatdtype smth):
print(smth)
А затем в Python ниже появляется ошибка «Ошибка типа: не найдена соответствующая подпись»:
import numpy as np
smth= np.float32(19700101.0)
test(smth)
Однако это работает просто отлично:
cimport numpy as cnp
@cy.boundscheck(False)
@cy.wraparound(False)
cpdef void test( cnp.npy_float32 smth):
print(smth)
Комментарии:
1. Я думаю, что, вероятно, константа интерпретируется как double и ищет точное совпадение. Более типичным использованием для fused types был бы тип с определением как float, так и double .