[Numpy-discussion] 3D array problem in Python

Raul Cota raul@virtualmaterials....
Mon Dec 31 12:42:17 CST 2012


Quick comment since I was working on timing trivial operations,

If I run the triple loop with R with only zeros thus avoiding the 
integration, the loop takes in my computer about 1 second with the 
float() function and about 1.5 without it if R is dtype='float64' and 
3.3 seconds if dtype='float32'.

I didn't bother trying the other obvious speed up of avoiding the dot 
operator

quad = integrate.quad

and using quad inside the triple loop.

I do those things out of habit but they barely ever make a meaningful 
difference.


Conclusions:
1) The overhead of the triple loop is meaningless if the whole operation 
takes minutes to complete.

2) Using float() does make it faster but in this scenario the speed up 
is meaningless in the grand scheme of things.
* It is besides the point, but for what is worth, with the modified code 
for numpy I suggested a week ago, using the float() function is not 
needed to get it to run in 1 second.


Raul Cota




On 30/12/2012 5:35 PM, Chris Barker - NOAA Federal wrote:
> On Sun, Dec 30, 2012 at 3:41 AM, Happyman <bahtiyor_zohidov@mail.ru> wrote:
>> nums=32
>> rows=120
>> cols=150
>>
>> for k in range(0,nums):
>>            for i in range(0,rows):
>>                       for j in range(0,cols):
>>                                        if float ( R[ k ] [ i ] [ j ] ) ==
>> 0.0:
> why the float() -- what data type is R?
>
>>                                        else:
>>                                                   val11[ i ] [ j ], val22[ i
>> ][ j ] = integrate.quad( lambda x :  F1(x)*F2(x) , 0 , pi)
> this is odd -- Do F1 and F2 depend on i,j, or k somehow? or are you
> somehow integerting over the k-dimension? In which case, I'm guessing
> that integration is you time killer anyway -- do some profiling to
> know for sure.
>
> -Chris
>



More information about the NumPy-Discussion mailing list