Functor for the SPLINCOL projector.
It's the union of SPLIN and SPCOL projectors.
>>> from numpy.random import rand, seed
>>> import numpy as np
>>> M = np.round(
rand(5,5), decimals=2)
>>> M
array([[0.37, 0.95, 0.73, 0.6 , 0.16],
[0.16, 0.06, 0.87, 0.6 , 0.71],
[0.02, 0.97, 0.83, 0.21, 0.18],
[0.18, 0.3 , 0.52, 0.43, 0.29],
[0.61, 0.14, 0.29, 0.37, 0.46]])
>>> p1 = splin(M.shape, 3, normalized=False)
>>> p2 = spcol(M.shape, 3, normalized=False)
>>> p = splincol(M.shape, 3, normalized=False)
>>> p1(M)
array([[0. , 0.95, 0.73, 0.6 , 0. ],
[0. , 0. , 0.87, 0.6 , 0.71],
[0. , 0.97, 0.83, 0.21, 0. ],
[0. , 0.3 , 0.52, 0.43, 0. ],
[0.61, 0. , 0. , 0.37, 0.46]])
>>> p2(M)
array([[0.37, 0.95, 0.73, 0.6 , 0. ],
[0. , 0. , 0.87, 0.6 , 0.71],
[0. , 0.97, 0.83, 0. , 0. ],
[0.18, 0.3 , 0. , 0.43, 0.29],
[0.61, 0. , 0. , 0. , 0.46]])
>>> p(M)
array([[0.37, 0.95, 0.73, 0.6 , 0. ],
[0. , 0. , 0.87, 0.6 , 0.71],
[0. , 0.97, 0.83, 0.21, 0. ],
[0.18, 0.3 , 0.52, 0.43, 0.29],
[0.61, 0. , 0. , 0.37, 0.46]])
>>> p1M = p1(M)
>>> p2M = p2(M)
>>> p1M[p1M == p2M] = 0
>>> p1M+p2M
array([[0.37, 0.95, 0.73, 0.6 , 0. ],
[0. , 0. , 0.87, 0.6 , 0.71],
[0. , 0.97, 0.83, 0.21, 0. ],
[0.18, 0.3 , 0.52, 0.43, 0.29],
[0.61, 0. , 0. , 0.37, 0.46]])
>>> (p1M+p2M == p(M)).all()
True