In arrayobject.c, various complex functions (e.g., array_imag_get) use: PyArray_ISCOMPLEX -> PyTypeNum_ISCOMPLEX, which is hard coded to 2 predefined types :( If PyArray_ISCOMPLEX allowed user-defined types, I'm guessing functions such as array_imag_get would just work?