<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#330033">
    <pre wrap="">To: Discussion of Numerical Python <a class="moz-txt-link-rfc2396E" href="mailto:numpy-discussion@scipy.org"><numpy-discussion@scipy.org></a>
Message-ID:
        <a class="moz-txt-link-rfc2396E" href="mailto:CAN06oV9E2Xsf=tGbyqgXpnT4LHAN6TWTbuyi8gAGT-Vg2QAFjQ@mail.gmail.com"><CAN06oV9E2Xsf=tGbyqgXpnT4LHAN6TWTbuyi8gAGT-Vg2QAFjQ@mail.gmail.com></a>
Content-Type: text/plain; charset=ISO-8859-1

On Wed, Jul 24, 2013 at 8:53 AM, St?fan van der Walt <a class="moz-txt-link-rfc2396E" href="mailto:stefan@sun.ac.za"><stefan@sun.ac.za></a> wrote:
</pre>
    <blockquote type="cite" style="font-size: large; color: #000000;">
      <pre wrap="">On Wed, Jul 24, 2013 at 2:15 AM, Chris Barker - NOAA Federal
<a class="moz-txt-link-rfc2396E" href="mailto:chris.barker@noaa.gov"><chris.barker@noaa.gov></a> wrote:
</pre>
      <blockquote type="cite" style="font-size: large; color: #000000;">
        <pre wrap="">On Tue, Jul 23, 2013 at 6:09 AM, Pauli Virtanen <a class="moz-txt-link-rfc2396E" href="mailto:pav@iki.fi"><pav@iki.fi></a> wrote:

</pre>
        <blockquote type="cite" style="font-size: large; color:
          #000000;">
          <pre wrap="">The .H property has been implemented in Numpy matrices and Scipy's
sparse matrices for many years.
</pre>
        </blockquote>
        <pre wrap="">Then we're done. Numpy  is an array package, NOT a matrix package, and
while you can implement matrix math with arrays (and we do), having
quick and easy mnemonics for common matrix math operations (but
uncommon general purpose array operations) is not eh job of numpy.
That's what the matrix object is for.
</pre>
      </blockquote>
      <pre wrap="">I would argue that the ship sailed when we added .T already.  Most
users see no difference between the addition of .T and .H.</pre>
    </blockquote>
    I agree.  During the Numarray period, I developed a Matrix sub-class
    which provided:<br>
    <blockquote>  # Properties<br>
        A=        property(fget= toArray,<br>
                          doc= 'Deliver the data as an array.')<br>
        Adj=      property(fget= getAdjoint,<br>
                          doc= 'Deliver the adjoint matrix.')<br>
        Conj=     property(fget= getConjugate,<br>
                          doc= 'Deliver the conjugate of the matrix.')<br>
        Diag=     property(fget= getDiagonal,<br>
                          doc= 'Extract the diagonal as a row vector.')<br>
        lTri=     property(fget= getLTri,<br>
                          doc= 'Extract the lower triangular matrix, ' +<br>
                               'ie. elements on and below the
      diagonal.')<br>
        Cond=     property(fget= getCond,<br>
                           doc= 'Deliver the 2-norm Condition number.')<br>
        Det=      property(fget=getDeterminant,<br>
                           doc= 'Deliver the determinant.')<br>
        EValues=  property(fget= getEigenvalues,<br>
                          doc= 'Deliver the eigenvalues.')<br>
        EVectors= property(fget= getEigenvectors,<br>
                           doc= 'Deliver the eigenvectors.')<br>
        I=        property(fget= getInverse,<br>
                           doc= 'Deliver the inverse.')<br>
        Imag=     property(fget= getImag,<br>
                           doc= 'Return the imaginary part of the
      matrix.')<br>
        Norm=     property(fget= getNorm,<br>
                           doc= 'To calculate the 2-norm of the
      matrix.')<br>
        Real=     property(fget= getReal,<br>
                           doc= 'Return the real part of the matrix.')<br>
        Sqr=      property(fget= getSqr,<br>
                           doc= 'Return the square of each element.')<br>
        SVD=      property(fget= getSVD,<br>
                           doc= 'Return S, V, D (Singular Value
      Decomposition.')<br>
        T=        property(fget= getTranspose,<br>
                           doc= 'Deliver the transpose.')<br>
        uTri=     property(fget= getUTri,<br>
                          doc= 'Extract the upper triangular matrix, ' +<br>
                               'ie. elements on and above the diagonal.'<br>
    </blockquote>
    I think H was in there too.<br>
    <br>
    All of this was lost when Travis came along with numpy.  No thought
    was given to sparse matrices at that time.<br>
    <blockquote type="cite" style="font-size: large; color: #000000;">
      <pre wrap="">The matrix class should probably be deprecated and removed from NumPy
in the long run--being a second class citizen not used by the
developers themselves is not sustainable.  And, now that we have "dot"
as a method, there's very little advantage to it.</pre>
    </blockquote>
    I would argue that, in some sense, it should be promoted.  Perhaps
    it's better as a separate module.<br>
    <blockquote type="cite" style="font-size: large; color: #000000;">
      <pre wrap="">St?fan
</pre>
    </blockquote>
    <pre wrap="">Colin W.
</pre>
  </body>
</html>