On 25/01/2011 20:13, Matt Funk wrote:
1) a = rand(10,1)
2) Y = a
3) mask = Y>  100;
4) Y(mask) = 100;
5) a = a+Y

Basically i am getting stuck on line 4). I was wondering if it is
possible or not with python?
(The above is working matlab code)

I don't understand this matlab code completely (I would expect rand to return in the range 0-1, so would expect (Y > 100) to match nothing). Nonetheless, to achieve line 4 I believe you are looking for:

>>> Y[mask] = 100

However, you can also do directly:

>>> Y[Y>100] = 100

This won't work exactly as you anticipate, because presumably in matlab the line 'Y = a' makes a copy of 'a' (it has been a long time since I used matlab). In python, Y and a will still refer to the same object, so altering Y will also alter a. The *most literal* translation to python of your sample is probably:

>> import numpy
>> a = numpy.random.rand(10,1)
>> Y = a.copy()
>> mask = Y > 100
>> Y[mask] = 100
>> a = a + Y

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to