Hello everyone, this week I have started some preparation work for new formats of sparse array. The default format for sparse array in SymPy is Dictionary of keys(DOK) which means that the non-zero values are stored in a dictionary with the index as key and non-zero value as value. But this format has some disadvantages, i.e. very slow iterations due to random order of keys. So in order to improve the performance for some Array operations, I started thinking about infroducing new formats to sparse array module.
The format are widely used in matrix but not in array. Staying in tow dimension matrix makes some special format straight forward: Coordinate list (COO) for example, has one list for non-zero values and two more for columns and rows. But how to deal with the case of Array where the dimension(or rank) is variant is one obstacle.
So this week I have been mostly searching for solutions in order to dynamically handle the dimension for each format.
A new PR is opened to firstly implement the algorithm of each format. Link And a basic implementation is done to show the structure of LIL format.
As a finalization of last phase, most of sparse array casting into dense array issues have been resolved.