12

I found the following lines in the scikit-learn package:

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: ... 

All my searches for "angle brackets in Python" give answers about documentation or decorator syntax, which I am pretty sure this is neither because it looks like actual logic.

What do the angle brackets in the above Python code do and where can I learn more about them?

2 Answers 2

11

That is Cython's syntax for type casting/coercion. It is not plain Python. Notice the file extension is .pyx

You can learn more about them in the documentation for Cython.

Here's an example taken from the doc page:

cdef char *p, float *q p = <char*>q 

Using Cython is not uncommon with projects like scikit-learn, where one gains significant optimisations by mixing readable Python with blazing-speed C.

Sign up to request clarification or add additional context in comments.

Comments

3

Take a look at Cython documentation, about types.

Additionally you could note that the file extension is .pyx and on the top of the file there are cimport statements.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.