From: Paul F D. <pa...@pf...> - 2002-03-06 19:48:56
|
I believe the correct solution is a major upgrade to Matrix.py along the lines of what is done in MA; that is, to craft an object that uses Numeric for its implementation but which defines all its own operators in a manner that is semantically sensible for the type of object it is. Such an upgrade could subsequently be improved by using different underlying software for various operations, or even more sophisticated changes such as using a transposed attribute to lazily evaluate transposes in a cleaner way than Numeric does it. Also an upgrade to Numarray would then be virtually painless. If you have never looked at MA, please examine source file Packages/MA/Lib/MA.py before commenting. This file is fairly complex and the required changes to Matrix.py would be considerably simpler; but you can verify that it is fairly straightforward to do. On my project we have done something similar to create a "climate data variable" object. Such a design includes an "exit" function to allow the instance to cheaply view itself as the underlying Numeric array. (In MA, this is "filled", which makes a Numeric array by replacing missing values, but if there are no missing values returns the underlying Numeric array). I'm willing to do this for the community but it would have a side effect; if anyone has been doing "from Matrix import *" they would suddenly get a lot more names imported that would conflict with any imported from Numeric. |