Thanks, Noel.&nbsp; I&#39;ll look it over.<br><br>I&#39;m also more inclined toward using a uniform representation for arrays of arbitrary dimensionality - as you did.&nbsp; <br><br>I would use numpy&#39;s idea of &#39;broadcasting&#39; to unify the shape of the arrays to solve some of the latter problems:<br>
<br><div style="margin-left: 40px;">&quot;... the first rule of broadcasting is that if all input arrays do not have the same number of dimensions, then a &#39;1&#39; will be repeatedly pre-pended to the shapes of the smaller arrays until all the arrays have the same number of dimensions.&nbsp; The second rule of broadcasting ensures that arrays with a size of 1 along a particular dimension act as if they had the size of the array with the largest shape along that dimension.&nbsp; The value of the array element is assumed to be the same along the dimension for the &quot;broadcasted&quot; array.&nbsp; After the application of the broadcasting rules, the sizes of the arrays must match.&quot; ... from the Guide to NumPy<br>
<br></div>Doug<br><br><div class="gmail_quote">On Sun, Mar 2, 2008 at 5:47 AM, Noel Welsh &lt;<a href="mailto:noelwelsh@gmail.com">noelwelsh@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Sun, Mar 2, 2008 at 3:32 AM, Doug Williams<br>
&lt;<a href="mailto:m.douglas.williams@gmail.com">m.douglas.williams@gmail.com</a>&gt; wrote:<br>
&gt; Any ideas, etc would be welcome. &nbsp;One thing I don&#39;t currently have in the<br>
&gt; science collection - and which is critical to the basic structure - is a<br>
&gt; good matrix representation/manipulation module. &nbsp;I&#39;ve implemented some for<br>
&gt; specific analyses I am doing, but they are very inefficient and not nearly<br>
&gt; as convenient as what numpy provides for Python. &nbsp;If anyone can point me to<br>
&gt; some good implementations, or provide some ideas, it would be appreciated.<br>
<br>
</div>Attached is what I have been using for my projects. &nbsp;It builds on Will<br>
Farr&#39;s plt-linalg package (which builds on BLAS and LAPACK) and<br>
provides more functions and compact notation. &nbsp;Vectors and matrices<br>
are distinct types in this package, and there is no support for arrays<br>
with dimension greater than 2.<br>
<br>
My first version of this library used a uniform representation for<br>
arrays of arbitrary dimension. I found this less convenient for my<br>
task than specialising to vectors and matrices. &nbsp;The key problem in<br>
designing such a library is deciding how to satisfy users who want a<br>
general compact container type (i.e. arrays of arbitrary dimension)<br>
and users who want a linear algebra package. &nbsp;For example, do the<br>
linear algebra operators work with vectors? &nbsp;If so, how are row and<br>
column vectors distinguished?<br>
<br>
HTH,<br>
<font color="#888888">Noel<br>
</font></blockquote></div><br>