Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > by-pkgid > b92d07bcce6b7f2da3b9721b1d9483a1 > files > 482

python-cvxopt-1.1.2-1mdv2010.1.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Matrix Formatting &mdash; CVXOPT User&#39;s Guide</title>
    <link rel="stylesheet" href="_static/cvxopt.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '#',
        VERSION:     '1.1.1',
        COLLAPSE_MODINDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  false
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="copyright" title="Copyright" href="copyright.html" />
    <link rel="top" title="CVXOPT User&#39;s Guide" href="index.html" />
    <link rel="prev" title="C API" href="c-api.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="c-api.html" title="C API"
             accesskey="P">previous</a></li>
    <li><a href="http://abel.ee.ucla.edu/cvxopt">CVXOPT home</a> |</li>
    
        <li><a href="index.html">user&#39;s guide</a> </li>
 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="matrix-formatting">
<span id="c-printing"></span><h1>Matrix Formatting<a class="headerlink" href="#matrix-formatting" title="Permalink to this headline">ΒΆ</a></h1>
<p>This appendix describes ways to customize the formatting of CVXOPT matrices.</p>
<p>As with other Python objects, the functions <tt class="xref docutils literal"><span class="pre">repr</span></tt> and <tt class="xref docutils literal"><span class="pre">str</span></tt>
return strings with printable representations of matrices.  The command
&#8216;<tt class="docutils literal"><span class="pre">print</span> <span class="pre">A</span></tt>&#8216; executes &#8216;<tt class="docutils literal"><span class="pre">str(A)</span></tt>&#8216;, whereas the command &#8216;<tt class="docutils literal"><span class="pre">A</span></tt>&#8216;
calls &#8216;<tt class="docutils literal"><span class="pre">repr(A)</span></tt>&#8216;.  The following example illustrates the default
formatting of dense matrices.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">cvxopt</span> <span class="kn">import</span> <span class="n">matrix</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">50</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">),</span> <span class="s">&#39;d&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span>
<span class="go">&lt;5x10 matrix, tc=&#39;d&#39;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">A</span>
<span class="go">[ 0.00e+00  5.00e+00  1.00e+01  1.50e+01  2.00e+01  2.50e+01  3.00e+01 ... ]</span>
<span class="go">[ 1.00e+00  6.00e+00  1.10e+01  1.60e+01  2.10e+01  2.60e+01  3.10e+01 ... ]</span>
<span class="go">[ 2.00e+00  7.00e+00  1.20e+01  1.70e+01  2.20e+01  2.70e+01  3.20e+01 ... ]</span>
<span class="go">[ 3.00e+00  8.00e+00  1.30e+01  1.80e+01  2.30e+01  2.80e+01  3.30e+01 ... ]</span>
<span class="go">[ 4.00e+00  9.00e+00  1.40e+01  1.90e+01  2.40e+01  2.90e+01  3.40e+01 ... ]</span>
</pre></div>
</div>
<p>The format is parameterized by the dictionary <tt class="xref docutils literal"><span class="pre">options</span></tt> in the
module <tt class="xref docutils literal"><span class="pre">cvxopt.printing</span></tt>.  The parameters <tt class="xref docutils literal"><span class="pre">options['iformat']</span></tt>
and <tt class="xref docutils literal"><span class="pre">options['dformat']</span></tt> determine, respectively, how integer and
double/complex numbers are printed.  The entries are Python format strings
with default values <tt class="xref docutils literal"><span class="pre">'%</span> <span class="pre">.2e'</span></tt> for <tt class="xref docutils literal"><span class="pre">'d'</span></tt> and <tt class="xref docutils literal"><span class="pre">'z'</span></tt>
matrices and <tt class="xref docutils literal"><span class="pre">%</span> <span class="pre">i'</span></tt> for <tt class="xref docutils literal"><span class="pre">'i'</span></tt> matrices.  The parameters
<tt class="xref docutils literal"><span class="pre">options['width']</span></tt> and <tt class="xref docutils literal"><span class="pre">options['height']</span></tt> specify the maximum
number of columns and rows that are shown.  If <tt class="xref docutils literal"><span class="pre">options['width']</span></tt> is
set to a negative value, all columns are displayed.  If
<tt class="xref docutils literal"><span class="pre">options['height']</span></tt> is set to a negative value, all rows are
displayed.  The default values of <tt class="xref docutils literal"><span class="pre">options['width']</span></tt> and
<tt class="xref docutils literal"><span class="pre">options['height']</span></tt> are 7 and -1, respectively.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">cvxopt</span> <span class="kn">import</span> <span class="n">printing</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">printing</span><span class="o">.</span><span class="n">options</span>
<span class="go">{&#39;width&#39;: 7, &#39;dformat&#39;: &#39;% .2e&#39;, &#39;iformat&#39;: &#39;% i&#39;, &#39;height&#39;: -1}</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">printing</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">&#39;dformat&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%.1f</span><span class="s">&#39;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">printing</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">&#39;width&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">A</span>
<span class="go">[ 0.0  5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0]</span>
<span class="go">[ 1.0  6.0 11.0 16.0 21.0 26.0 31.0 36.0 41.0 46.0]</span>
<span class="go">[ 2.0  7.0 12.0 17.0 22.0 27.0 32.0 37.0 42.0 47.0]</span>
<span class="go">[ 3.0  8.0 13.0 18.0 23.0 28.0 33.0 38.0 43.0 48.0]</span>
<span class="go">[ 4.0  9.0 14.0 19.0 24.0 29.0 34.0 39.0 44.0 49.0]</span>
</pre></div>
</div>
<p>In order to make the built-in Python functions <tt class="xref docutils literal"><span class="pre">repr</span></tt> and <tt class="xref docutils literal"><span class="pre">str</span></tt>
accessible for further customization, two functions are provided in
CVXOPT.  The function <tt class="xref docutils literal"><span class="pre">cvxopt.matrix_repr</span></tt> is used when
<tt class="xref docutils literal"><span class="pre">repr</span></tt> is called with a matrix argument; and
<tt class="xref docutils literal"><span class="pre">cvxopt.matrix_str</span></tt> is used when <tt class="xref docutils literal"><span class="pre">str</span></tt> is called with a matrix
argument.  By default, the functions are set to
<tt class="xref docutils literal"><span class="pre">printing.matrix_repr_default</span></tt> and
<tt class="xref docutils literal"><span class="pre">printing.matrix_str_default</span></tt>, respectively, but they can be
redefined to any other Python functions.  For example, if we prefer
<tt class="docutils literal"><span class="pre">A</span></tt> to return the same output as <tt class="docutils literal"><span class="pre">print</span> <span class="pre">A</span></tt>, we can simply
redefine <tt class="xref docutils literal"><span class="pre">cvxopt.matrix_repr</span></tt> as shown below.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">cvxopt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">cvxopt</span> <span class="kn">import</span> <span class="n">matrix</span><span class="p">,</span> <span class="n">printing</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span> <span class="s">&#39;d&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span>
<span class="go">&lt;2x2 matrix, tc=&#39;d&#39;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">cvxopt</span><span class="o">.</span><span class="n">matrix_repr</span> <span class="o">=</span> <span class="n">printing</span><span class="o">.</span><span class="n">matrix_str_default</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span>
<span class="go">[ 0.00e+00  2.00e+00]</span>
<span class="go">[ 1.00e+00  3.00e+00]</span>
</pre></div>
</div>
<p>The formatting for sparse matrices is similar.  The functions <tt class="xref docutils literal"><span class="pre">repr</span></tt>
and <tt class="xref docutils literal"><span class="pre">str</span></tt> for sparse matrices are <tt class="xref docutils literal"><span class="pre">cvxopt.spmatrix_repr</span></tt>
and <tt class="xref docutils literal"><span class="pre">cvxopt.spmatrix_str</span></tt>, respectively.  By default, they are set to
<tt class="xref docutils literal"><span class="pre">printing.spmatrix_repr_default</span></tt> and
<tt class="xref docutils literal"><span class="pre">printing.spmatrix_repr_str</span></tt>.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">cvxopt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">cvxopt</span> <span class="kn">import</span> <span class="n">printing</span><span class="p">,</span> <span class="n">spmatrix</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">spmatrix</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span>
<span class="go">&lt;5x10 sparse matrix, tc=&#39;d&#39;, nnz=5&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">A</span>
<span class="go">[ 0.00e+00     0         0         0         0         0         0     ... ]</span>
<span class="go">[    0      1.00e+00     0         0         0         0         0     ... ]</span>
<span class="go">[    0         0      2.00e+00     0         0         0         0     ... ]</span>
<span class="go">[    0         0         0      3.00e+00     0         0         0     ... ]</span>
<span class="go">[    0         0         0         0      4.00e+00     0         0     ... ]</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">cvxopt</span><span class="o">.</span><span class="n">spmatrix_repr</span> <span class="o">=</span> <span class="n">printing</span><span class="o">.</span><span class="n">spmatrix_str_default</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span>
<span class="go">[ 0.00e+00     0         0         0         0         0         0     ... ]</span>
<span class="go">[    0      1.00e+00     0         0         0         0         0     ... ]</span>
<span class="go">[    0         0      2.00e+00     0         0         0         0     ... ]</span>
<span class="go">[    0         0         0      3.00e+00     0         0         0     ... ]</span>
<span class="go">[    0         0         0         0      4.00e+00     0         0     ... ]</span>
</pre></div>
</div>
<p>As can be seen from the example, the default behaviour is to print the
entire matrix including structural zeros. An alternative triplet printing
style is defined in <tt class="xref docutils literal"><span class="pre">printing.spmatrix_str_triplet</span></tt>.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">cvxopt</span><span class="o">.</span><span class="n">spmatrix_str</span> <span class="o">=</span> <span class="n">printing</span><span class="o">.</span><span class="n">spmatrix_str_triplet</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">A</span>
<span class="go">(0,0)  0.00e+00</span>
<span class="go">(1,1)  1.00e+00</span>
<span class="go">(2,2)  2.00e+00</span>
<span class="go">(3,3)  3.00e+00</span>
<span class="go">(4,4)  4.00e+00</span>
</pre></div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <h4>Previous topic</h4>
            <p class="topless"><a href="c-api.html"
                                  title="previous chapter">C API</a></p>
          <div id="searchbox" style="display: none">
            <h3>Quick search</h3>
              <form class="search" action="search.html" method="get">
                <input type="text" name="q" size="18" />
                <input type="submit" value="Go" />
                <input type="hidden" name="check_keywords" value="yes" />
                <input type="hidden" name="area" value="default" />
              </form>
              <p class="searchtip" style="font-size: 90%">
              Enter search terms or a module, class or function name.
              </p>
          </div>
          <script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="c-api.html" title="C API"
             >previous</a></li>
    <li><a href="http://abel.ee.ucla.edu/cvxopt">CVXOPT home</a> |</li>
    
        <li><a href="index.html">user&#39;s guide</a> </li>
 
      </ul>
    </div>
    <div class="footer">
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
    </div>
  </body>
</html>