[Tutor] NumPy Question - numpy.put in multi-dimensional array

Eike Welk eike.welk at gmx.net
Wed Nov 14 01:18:27 CET 2007


Hello Bryan!

On Wednesday 14 November 2007 00:18, Bryan Fodness wrote:
> I see how to do it in a one-dimenstional array, but do not know the
> syntax for the multi-dimensional case.
>
> >from numpy import *
>
> a = zeros((60,40), int)
>
> fields = {}
> field = 10
> fields[field] = '30A', 5
>
> iy = int(fields[field][1])
> ix = int(fields[field][0].rstrip('AB'))
>
> for j in range(iy):
>      put(a,[39 - j],[1])
Should be maybe:
       a[0, 39 - j] = 1

>
> Can someone help me figure out how I would do it for multiple rows?
>
> I thought,
>
> for i in range(ix):
>    for j in range(iy):
>         put(a,[i][39-j],[1])
change to:
          a[i, 39-j] = 1

You could replace the nested for loops by the following code:
a[:ix, :iy:-1] = 1

I think you shouldn't use put(...) in your code. It is a fairly 
specialized function.  

More information:
http://www.scipy.org/Numpy_Example_List_With_Doc#head-5202db3259f69441c695ab0efc0cdf45341829fc

Regards, 
Eike


More information about the Tutor mailing list