<p dir="auto"><a href="https://github.com/scipy/scipy/blob/v0.17.0/scipy/signal/ltisys.py#L352"><code class="notranslate">ss2zpk</code> is implemented as</a></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="return tf2zpk(*ss2tf(A, B, C, D, input=input))"><pre class="notranslate"><code class="notranslate">return tf2zpk(*ss2tf(A, B, C, D, input=input))
</code></pre></div>
<p dir="auto">Please don't go through transfer-function form as it throws away numerical accuracy.</p>
<p dir="auto">I am not sure of the best way to implement ss2zpk. The poles are easy: get the eigenvalues. Not sure about the zeros.</p>
<p dir="auto">Related to the inverse function <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="137647139" data-permission-text="Title is private" data-url="https://github.com/scipy/scipy/issues/5912" data-hovercard-type="issue" data-hovercard-url="/scipy/scipy/issues/5912/hovercard" href="https://github.com/scipy/scipy/issues/5912">#5912</a>.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="def ss2zpk(A, B, C, D, input=0):
    return tf2zpk(*ss2tf(A, B, C, D, input=input))"><pre class="notranslate"><code class="notranslate">def ss2zpk(A, B, C, D, input=0):
    return tf2zpk(*ss2tf(A, B, C, D, input=input))
</code></pre></div>
<p dir="auto">I believe this has numerical stability problems, same as <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="22972382" data-permission-text="Title is private" data-url="https://github.com/scipy/scipy/issues/3085" data-hovercard-type="pull_request" data-hovercard-url="/scipy/scipy/pull/3085/hovercard" href="https://github.com/scipy/scipy/pull/3085">#3085</a></p>