Difference between MATLAB zp2sos and python zpk2sos functions
I am not sure why the first 3 coefficients in python are always different than that of MATLAB.

It's just a scaling. If you call Matlab's zp2sos without the second output argument, you will get the same three values as Python. If you need Python to match Matlab, use the first value of the sos as your &quot;k&quot; and divide the first three values in the sos by k (in your example this yields 1 2 1).

Output ordering for 'p' is different than MATLAB but all values account for. Not sure if it matters?

Depending on your application it actually does matter. For rather complicated reasons, Python's is better and will in most cases generate less numerical noise  and often significantly so.