Velocity Reviews > NumPy Question - numpy.put in multi-dimensional array

# NumPy Question - numpy.put in multi-dimensional array

Bryan.Fodness@gmail.com
Guest
Posts: n/a

 11-13-2007
from numpy import *

a = zeros((2,40), int)

fields = {}
field = 10
fields[field] = '30A', 5

iy = int(fields[field][1])
ix = int(fields[field][0].rstrip('AB'))

for i in range(2):
for j in range(iy):
# put(a,[39 - j],[1]) #1d

Can someone help me figure out how I would do it for multiple rows?

I thought,

put(a,[i][39-j],[1])

but,

Traceback (most recent call last):
put(a,[i][39 - j],[1])
IndexError: list index out of range

davisn90210@gmail.com
Guest
Posts: n/a

 11-13-2007
On Nov 13, 1:22 pm, "(E-Mail Removed)"
<(E-Mail Removed)> wrote:
> from numpy import *
>
> a = zeros((2,40), int)
>
> fields = {}
> field = 10
> fields[field] = '30A', 5
>
> iy = int(fields[field][1])
> ix = int(fields[field][0].rstrip('AB'))
>
> for i in range(2):
> for j in range(iy):
> # put(a,[39 - j],[1]) #1d
>
> Can someone help me figure out how I would do it for multiple rows?
>
> I thought,
>
> put(a,[i][39-j],[1])
>
> but,
>
> Traceback (most recent call last):
> put(a,[i][39 - j],[1])
> IndexError: list index out of range

Try
put(a, [(i, 39-j)], [1]
Note, however, that in this case you could just as easily use
a[i, 39-j] = 1

--Nathan Davis

Robert Kern
Guest
Posts: n/a

 11-13-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> from numpy import *
>
> a = zeros((2,40), int)
>
> fields = {}
> field = 10
> fields[field] = '30A', 5
>
> iy = int(fields[field][1])
> ix = int(fields[field][0].rstrip('AB'))
>
> for i in range(2):
> for j in range(iy):
> # put(a,[39 - j],[1]) #1d
>
> Can someone help me figure out how I would do it for multiple rows?

numpy questions are best asked on the numpy mailing list.

http://www.scipy.org/Mailing_Lists

> I thought,
>
> put(a,[i][39-j],[1])
>
> but,
>
> Traceback (most recent call last):
> put(a,[i][39 - j],[1])
> IndexError: list index out of range

In this case, you don't really want put(). Just use indexing:

for i in range(2):
for j in range(iy):
a[i,39-j] = 1

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
an underlying truth."
-- Umberto Eco