quickly looping over a 2D array?

Peter Otten __peter__ at web.de
Mon Jul 27 08:46:54 EDT 2009


Martin wrote:

> On Jul 27, 12:42 pm, Peter Otten <__pete... at web.de> wrote:
>> Martin wrote:
>> > I am new to python and I was wondering if there was a way to speed up
>> > the way I index 2D arrays when I need to check two arrays
>> > simultaneously? My current implementations is (using numpy) something
>> > like the following...
>>
>> > for i in range(numrows):
>> >     for j in range(numcols):
>>
>> >         if array_1[i, j] == some_value or array_2[i, j] >= array_1[i,
>> > j] * some_other_value
>> >             array_1[i, j] = some_new_value
>>
>> array_1[(array_1 == some_value) | (array_2 >= array_1 *
>> some_other_value)] = some_new_value
>>
>> maybe?
> 
> So I tried...
> 
> band_1[(array_1 == 255) or (array_2 >= array_1 * factor)] = 0
> 
> which led to
> 
> ValueError: The truth value of an array with more than one element is
> ambiguous. Use a.any() or a.all()
> 
> so not sure that works?

Copy and paste -- or replace "or" with "|".




More information about the Python-list mailing list