# [Tutor] cannonical matrix representation?

Smith smiles at worksmail.net
Sat Feb 11 05:42:24 CET 2006

```|   3. cannonical matrix representation? (Mike Cheponis)
|
| What's the best way to represent a matrix M with 4 dimensions, such
| as M[x][y][z][t] where each element in the sparse matrix could be a
| simple number, or could be an executable Python function snipped that
| returns a value when that cell is evaluated?
|
| The user of the program will type in Python functions to be inserted
| into particular cells in the 4-D matrix.
|
| I did't see any package that exactly does this; do I write my own
| Matrix class and base it on lists?

I don't know how full-blown of a solution that you need, but a little helper function for dictionaries (as was noted as a good way to deal with a sparse pmatric) might suffice, something like this,maybe.

###
def setdict(d,v,*k):
#args = dictionary, value, key all separated by commas
d[tuple(k)]=str(v)
def evaldict(d,*k):
#return the evaluated entry at key k in dictionary d
return eval(d[tuple(k)])
d={}
setdict(d,1,1,2)
setdict(d,'x+3',2)
print d
x=3
print evaldict(d,1,2)
print evaldict(d,2)

### output
{(1, 2): '1', (2,): 'x+3'}
1
6

###

The evaluation will pull its values from the context in which the evaldict is being made. There are ways to get around this, but just ask if you need/want to go this direction.
```

More information about the Tutor mailing list