[PYTHON MATRIX-SIG] J-style arrays in Python
Hinsen Konrad
hinsenk@ere.umontreal.ca
Tue, 26 Sep 1995 21:38:49 -0400
To bring back some life into this discussion group, I'll distribute a
Python implementation of J-like arrays, to give those unfamiliar with
J a chance to become familiar with its array and rank system. And of
course it is also usable, as long as the arrays don't become too big.
This is a first test version; many important functions are still
missing, others (like output formatting) need substantial improvement,
and many could probably be made faster with some thought.
To make (my) life simpler, I tried to stick to J's conventions as much
as possible (but hopefully without violating Python traditions). I am
not claiming that this is semantically the best way to implement arrays,
but it is a start.
Some general remarks:
- Since my implementation uses nested lists to represent arrays,
the elements can be arbitrary objects.
- Like arrays in J, my arrays are immutable, i.e. there is no
provision for changing individual elements. The reason for
making arrays immutable in J was that J is half-way to being
a functional language (it is not a pure functional language,
but many substantial problems can easily be solved in a
functional way). I have never missed element assignment, but
probably there are some good applications...
- All functions are implemented as external functions, not as
methods. The main reason is that at first I could not think of
a way to implement methods with variable rank, although later
I figured out how to do this (in the same way as I implemented
reduction).
I'll send two Python files; the first is the Array module itself,
and the second a kind of simple tutorial. Let me know if
anything is unclear. And let me know what you think of the
whole implementation!
-------------------------------------------------------------------------------
Konrad Hinsen | E-Mail: hinsenk@ere.umontreal.ca
Departement de chimie | Tel.: +1-514-343-6111 ext. 3953
Universite de Montreal | Fax: +1-514-343-7586
C.P. 6128, succ. A | Deutsch/Esperanto/English/Nederlands/
Montreal (QC) H3C 3J7 | Francais (phase experimentale)
-------------------------------------------------------------------------------
=================
MATRIX-SIG - SIG on Matrix Math for Python
send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org
=================