Jak można zrobić puste, numpy tablice typu int
w Cython? Następujące prace dla mnie podwójne lub float tablic:jak zainicjować tablice z liczbami całkowitymi o stałej wielkości w języku Cython?
# make array of size N of type float
cdef np.ndarray[float, ndim=1] myarr = np.empty(N)
# make array of size N of type int
cdef np.ndarray[int, ndim=1] myarr = np.empty(N)
Jednakże, jeśli staram się zrobić to samo z int, to się nie powiedzie:
# this fails
cdef np.ndarray[np.int, ndim=1] myarr = np.empty(N)
# wanted to set first element to be an int
myarr[0] = 5
daje błąd:
ValueError : Niedopasowanie bufora dtype, oczekiwano 'int', ale otrzymało 'podwójne'
Ponieważ najwyraźniej np.empty()
zwraca podwójne. Próbowałem:
cdef np.ndarray[np.int, ndim=1] myarr = np.empty(N, dtype=int)
, ale daje ten sam błąd. Jak to zrobić?
Dlaczego to nie działa ze zwykłym 'int' lub po prostu' np.int' w przeciwieństwie do 'np.int32_t'? – user248237dfsf
Argument type deklaracji ndarray musi być typu C, a nie typu obiektu Python. Jeśli zagłębisz się w plik nagłówka numpy cython "numpy.pxd", przekonasz się, że 'np.int32_t' ostatecznie kończy się deklaracją' signed int'. –
czy możesz wyjaśnić, dlaczego używasz 'dtype = np.int', a nie' dtype = np.int32_t' podczas wywoływania 'np.empty'? ten ostatni nie działa – user248237dfsf