Это потому, что в C
массивы имеют фиксированные формы.Максимальное число измерений, которое может иметь массив cython
, равно 8. Cython сохраняет все измерения массива в этом массиве фиксированной длины.
Это можно проверить, выполнив следующие действия:
%%cython
cdef cytest(double[:,:,:,:,:,:,:,:,:] arr): # works up to 8 ':'
return arr.shape
def pytest(arr):
return cytest(arr)
При компиляции выдается следующее сообщение об ошибке:
Error compiling Cython file:
------------------------------------------------------------
...
cdef cytest(double[:,:,:,:,:,:,:,:,:] arr):
^
------------------------------------------------------------
/path/to/_cython_magic_9a9aea2a10d5eb901ad6987411e371dd.pyx:1:19: More dimensions than the maximum number of buffer dimensions were used.
По сути, это означает, что предустановленный максимальный размер измерения равен 8, я полагаю, вы можете изменить это, изменив исходный файл cython_magic.