Каков наилучший способ преобразовать следующий код cython
Cython оптимизация булевой индексации
Учитывая следующий пример:
#setup example data Z and A
Z = np.random.randn(10,10)
A = np.random.randn(10,10)
A[0,1] = np.nan
A[1,3] = np.nan
A[5,3] = np.nan
A[3,5] = np.nan
B = np.isnan(A).transpose()
C = Z[B * B.transpose()]
Я хочу, чтобы оптимизировать определение типа из np.ndarray
B в приведенном выше примере, и оптимизировать создание ndarray C
.
Я пробовал использовать настройки B для uint8 и python и C++ bools.
cdef np.ndarray[np.uint8_t, ndim=2, cast=True]
однако это дает мало или вообще не SpeedUp
и
cdef np.ndarray[bool, ndim=2, cast=True]
где BOOL либо from cpython cimport bool
или from libcpp cimport bool
в обоих случаях выше код выдаст ошибку.