Что означает угловые скобки в Python?
Я нашел следующие строки в пакете scikit-learn:
if is_sparse:
problem = csr_set_problem(
(<np.ndarray[np.float64_t, ndim=1, mode='c']>X.data).data,
(<np.ndarray[np.int32_t, ndim=1, mode='c']>X.indices).shape,
(<np.ndarray[np.int32_t, ndim=1, mode='c']>X.indices).data,
(<np.ndarray[np.int32_t, ndim=1, mode='c']>X.indptr).shape,
(<np.ndarray[np.int32_t, ndim=1, mode='c']>X.indptr).data,
Y.data, (<np.int32_t>X.shape[1]), bias,
sample_weight.data)
else:
...
Все мои поиски "угловых скобок в Python" дают ответы о документации или синтаксисе декоратора, но я уверен, что это не так, потому что это похоже на реальную логику.
Что делают угловые скобки в приведенном выше коде Python и где я могу узнать больше. их?
2 ответа
Это синтаксис Cython для приведения типов / приведения. Это не простой Python. Обратите внимание, что расширение файла .pyx
Вы можете узнать больше о них в документации по Cython.
Вот пример, взятый со страницы документа:
cdef char *p, float *q
p = <char*>q
Использование Cython не редкость для таких проектов, как scikit-learn
где каждый получает существенную оптимизацию, смешивая читаемый Python с невероятной скоростью C.
Посмотрите на документацию Cython, о типах.
Кроме того, вы можете отметить, что расширение файла .pyx
и в верхней части файла есть cimport
заявления.