[Tutor] How to sum rows and columns of a matrix?

Kent Johnson kent37 at tds.net
Wed Feb 2 12:05:39 CET 2005


Liam Clarke wrote:
> There's a specific package for arrays 
> 
> http://www.stsci.edu/resources/software_hardware/numarray
> 
> that implements array mathematics. I use it for pixel map manipulation
> in pygame, so it's relatively fast.

Here is one way to do what you want using numarray:

  >>> import numarray

Create a 4x4 array:
  >>> m=numarray.array(range(16),shape=(4,4))
  >>> m
array([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])

Row access:
  >>> m[1]
array([4, 5, 6, 7])

Column access:
  >>> m[:,1]
array([ 1,  5,  9, 13])

Sum all the rows:
  >>> [sum(m[i]) for i in range(4)]
[6, 22, 38, 54]

Sum all the columns:
  >>> [sum(m[:,i]) for i in range(4)]
[24, 28, 32, 36]

Kent

> 
> 
> On Mon, 31 Jan 2005 19:09:59 +0100, Gregor Lingl <glingl at aon.at> wrote:
> 
>>Hi all of you,
>>
>>I'm representing a 4x4 matrix as a 16-element list, e.g.
>>
>>m=range(16)
>>
>>first 4 elements first row, second four elements second row etc.
>>I want to sum rows and columns like
>>
>>i-th row:
>>
>>sum(m[4*i:4*i+4])
>>
>>and ith column:
>>
>>sum(m[i::4])
>>
>>This seems to be slow because of the formation of the slices.
>>I wonder if there is a way using generators or generator-expressions
>>(which I didn't study yet) to compute these sums without copying
>>parts of the matrix to a new list. (I'd guess that there should exist
>>some canonical generator for sequences, which produces their elements
>>..., maybe also for slices ?)
>>
>>All comments, hints, solutions are welcome.
>>
>>Regards,
>>Gregor
>>
>>--
>>Gregor Lingl
>>Reisnerstrasse 3/19
>>A-1030 Wien
>>
>>Telefon: +43 1 713 33 98
>>Mobil:   +43 664 140 35 27
>>
>>Autor von "Python für Kids"
>>Website: python4kids.net
>>_______________________________________________
>>Tutor maillist  -  Tutor at python.org
>>http://mail.python.org/mailman/listinfo/tutor
>>
> 
> 
> 



More information about the Tutor mailing list