[Numpy-discussion] Quikest way to create a symetric (diagonal???) matrix ?

Hoyt Koepke hoytak@gmail....
Wed Mar 26 12:25:39 CDT 2008


If the rest of the matrix is already zeros and memory wasn't a
problem, you could just use

A_sym = A + A.T - diag(diag(A))

If memory was an issue, I'd suggest weave.inline (if that's a viable
option) or pyrex to do the loop, which would be about as fast as you
could get.

--Hoyt



On Wed, Mar 26, 2008 at 7:22 AM, Alexandre Fayolle
<alexandre.fayolle@logilab.fr> wrote:
> On Wed, Mar 26, 2008 at 09:48:02AM -0400, Pierre GM wrote:
>  > All,
>  > What's the quickest way to create a diagonal matrix ? I already have the
>  > elements above the main diagonal. Of course, I could use loops:
>  > >>>m=5
>  > >>>z = numpy.arange(m*m).reshape(m,m)
>  > >>>for k in range(m):
>  > >>>    for j in range(k+1,m):
>  > >>>        z[j,k] = z[k,j]
>  > But I was looking for something more efficient.
>
>  From your code, you certainly meant "symetric" and not diagonal.
>
>  Maybe you can speed up things a bit by assigning slices:
>
>  >>> for k in range(m):
>  ...     z[k:, k] = z[k, k:]
>
>
>
>  --
>  Alexandre Fayolle                              LOGILAB, Paris (France)
>  Formations Python, Zope, Plone, Debian:  http://www.logilab.fr/formations
>  Développement logiciel sur mesure:       http://www.logilab.fr/services
>  Informatique scientifique:               http://www.logilab.fr/science
>
> -----BEGIN PGP SIGNATURE-----
>  Version: GnuPG v1.4.6 (GNU/Linux)
>
>  iQEVAwUBR+pcDl6T+PKoJ87eAQI1zAf/W7wnB1a6sa4FuHDPTDjU61ZpvDgS41r7
>  B7EuSDncTluf3Y5ynQ8NroAihX0DvV4F5LTDcbFJbmqnQx8JApVoeQF3wnTnpf24
>  pUQ5oSB+w0+RtzU0Zu/TBkOh3hM8iPYyB2M7jq9/qakVxEsrlOiTH+j05ysJD9FG
>  GezArMoQu5ycJ26Ir9P7jR0acH/WBA84U524aiDbenLMmpFIZX7mElU47z/Ue5m7
>  xKTT/lu3BWQAJPoQTiHG7nRLDaAqxKVO0WLXPuUJ7HyCc4qjURhXZMmJQ2FP2ajt
>  H9AQQhNkO7eUAPmMLhK0x262bYIdq699UmjV7YOVmSvCrBM76okqew==
>  =ha+1
>  -----END PGP SIGNATURE-----
>
> _______________________________________________
>  Numpy-discussion mailing list
>  Numpy-discussion@scipy.org
>  http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>


More information about the Numpy-discussion mailing list