[SciPy-User] [scipy-user] How to apply a condition on some specific values of an array

Scott Sinclair scott.sinclair.za at gmail.com
Fri Feb 3 06:29:49 EST 2012


On 3 February 2012 12:48, Fabien Lafont <lafont.fabien at gmail.com> wrote:
> I'm just starting to use numpy and I have still Python's reflexes so I
> want to know how can I do the following code using Numpy "style".
>
> for i in range(0,len(array)+1):
>       if 10<array[i]<100:
>            new_array = array[i]*1000
>
> In other words is it possible to "scan" the values of an array and
> apply a "modification" to it if the condition is true

Yes - you can use fancy indexing (see
http://docs.scipy.org/doc/numpy/user/basics.indexing.html)

In[1]: import numpy as np

In[2]: arr = np.arange(10)
In[3]: arr
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In[4]: arr[(2 < arr) & (arr < 9)] *= 1000
In[5]: arr
Out[5]: array([   0,    1,    2, 3000, 4000, 5000, 6000, 7000, 8000,    9])

Cheers,
Scott



More information about the SciPy-User mailing list