[Tutor] Two-Dimensional arrays

David Ascher da@ski.org
Tue, 3 Aug 1999 09:49:43 -0700 (Pacific Daylight Time)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--2373553-9255-933698983=:145
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 3 Aug 1999, Deirdre Saoirse wrote:

> I have a problem that needs two-dimensional arrays, but NumPy really seems
> like overkill. I had solved it another way, then realized I really
> *needed* two-dimensional arrays.
> 
> Here's my constraints (for a knitwear design project I'm working on):
> 
> 1) typically an array will contain between 10k and 50k elements. Each
> element will have a stitch attribute and a color attribute (think two
> bytes).
> 
> 2) the most mathematically advanced thing I need to do with the elements
> is copy one row to the next (and apply patterning, which I don't expect to
> do for a while).

Here's a little something based, as was suggested, on a list of arrays.

It's incomplete, but it should be a start -- while it only deals with
'single-attribute arrays', it shouldn't be too hard to make a
"multiattributemat' which builds on Mat to deal w/ multivalued arrays.

--david

usage:

x = Mat((10,10), 'i')

x[0] = [4]*10
x[1][4:10] = x[0][:6]
x[2] = x[0]

etc.

--2373553-9255-933698983=:145
Content-Type: TEXT/plain; name="mat.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.WNT.4.04.9908030949430.145@rigoletto.ski.org>
Content-Description: 
Content-Disposition: attachment; filename="mat.py"

ZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkNCmltcG9ydCBzdHJpbmcNCg0KY2xh
c3MgTWF0Og0KICAgIGRlZmF1bHRzID0ge30NCiAgICBmb3IgZCBpbiAoJ2JC
aEhpSWxMZmQnKTogZGVmYXVsdHNbZF0gPSAwLjANCiAgICBkZWZhdWx0c1sn
YyddID0gJyAnDQoNCiAgICBkZWYgX19pbml0X18oc2VsZiwgKHdpZHRoLCBo
ZWlnaHQpLCB0eXBlY29kZSwgZGVmYXVsdD1Ob25lKToNCglhc3NlcnQgTWF0
LmRlZmF1bHRzLmhhc19rZXkodHlwZWNvZGUpDQoNCglzZWxmLnJvd3MgPSBb
Tm9uZV0qaGVpZ2h0DQoJc2VsZi53aWR0aCA9IHdpZHRoDQoJc2VsZi5oZWln
aHQgPSBoZWlnaHQNCglzZWxmLnR5cGVjb2RlID0gdHlwZWNvZGUNCglmb3Ig
aSBpbiByYW5nZShoZWlnaHQpOg0KCSAgICBpZiBkZWZhdWx0IGlzIE5vbmU6
DQoJCWluaXQgPSBbTWF0LmRlZmF1bHRzW3R5cGVjb2RlXV0qd2lkdGgNCgkg
ICAgZWxzZToNCgkJaWYgdHlwZShkZWZhdWx0KSBpbiAodHlwZSgoKSksIHR5
cGUoW10pKToNCgkJICAgIGFzc2VydCBsZW4oZGVmYXVsdCkgPT0gd2lkdGgN
CgkJICAgIGluaXQgPSBkZWZhdWx0DQoJCWVsc2U6DQoJCSAgICBpbml0ID0g
ZGVmYXVsdCp3aWR0aA0KCSAgICBzZWxmLnJvd3NbaV0gPSBhcnJheSh0eXBl
Y29kZSwgaW5pdCkNCg0KICAgIGRlZiBfX2dldHNsaWNlX18oc2VsZiwgc3Rh
cnQsIGVuZCk6DQoJcmV0dXJuIHNlbGYucm93c1tzdGFydDplbmRdDQoNCiAg
ICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6DQoJaWYgdHlwZShpdGVt
KSA9PSB0eXBlKCgpKToNCgkgICAgYXNzZXJ0IGxlbihpdGVtKSA9PSAyDQoJ
ICAgIGksaiA9IGl0ZW0NCgkgICAgcmV0dXJuIHNlbGYucm93c1tpXVtqXQ0K
CWVsaWYgdHlwZShpdGVtKSA9PSB0eXBlKDApOg0KCSAgICByZXR1cm4gc2Vs
Zi5yb3dzW2l0ZW1dICAjIHNoYXJlZCByZWZlcmVuY2UhDQoJZWxpZiB0eXBl
KGl0ZW0pID09IHR5cGUoc2xpY2UoMCwxLDEpKToNCgkgICAgIyBkZWFsIHdp
dGggZXh0ZW5kZWQgc2xpY2VzDQoJICAgIHJhaXNlICJVbmltcGxlbWVudGVk
Ig0KDQogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGl0ZW0sIHZhbHVlKToN
CglpZiB0eXBlKGl0ZW0pID09IHR5cGUoKCkpOg0KCSAgICBhc3NlcnQgbGVu
KGl0ZW0pID09IDINCgkgICAgaSxqID0gaXRlbQ0KCSAgICBzZWxmLnJvd3Nb
aV1bal0gPSB2YWx1ZQ0KCWVsaWYgdHlwZShpdGVtKSA9PSB0eXBlKDApOg0K
CSAgICBhc3NlcnQgbGVuKHZhbHVlKSA9PSBzZWxmLndpZHRoDQoJICAgIHZh
bHVlID0gbGlzdCh2YWx1ZSkNCgkgICAgc2VsZi5yb3dzW2l0ZW1dID0gYXJy
YXkoc2VsZi50eXBlY29kZSwgdmFsdWUpDQoJZWxpZiB0eXBlKGl0ZW0pID09
IHR5cGUoc2xpY2UoMCwxLDEpKToNCgkgICAgIyBkZWFsIHdpdGggZXh0ZW5k
ZWQgc2xpY2VzDQoJICAgIHJhaXNlICJVbmltcGxlbWVudGVkIg0KDQogICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOg0KCXJvd3MgPSBbXQ0KCWZvciByIGluIHNl
bGYucm93czoNCgkgICAgcm93cy5hcHBlbmQoc3RyKHIpW2xlbigiYXJyYXko
J2knLCAiKTotMV0pDQoJcmV0dXJuIHN0cmluZy5qb2luKHJvd3MsICcsXG4n
KQ0KDQp4ID0gTWF0KCgxMCwxMCksICdpJykNCnByaW50IHgNCg==
--2373553-9255-933698983=:145--