[yt-users] h5py execution time
John Wise
jwise at astro.princeton.edu
Fri Aug 13 15:49:04 PDT 2010
In my experience, interpreted languages are slow with loops. If you use
the array syntax in numpy, all of the loops are done in C. The same
thing happens in IDL, as well, where you dearly try to avoid loops.
This page helped me long ago in IDL...
http://www.dfanning.com/code_tips/slowloops.html
John
On 08/13/10 18:49, Jean-Claude Passy wrote:
> Hi Stephen,
>
> thanks, this was obvious but I did not think about it.
> Please enlarge my knowledge: why did "my method" with h5py require much
> more time than yours using Numpy ?
>
> Thanks,
>
> JC
>
> On 12/08/10 19:03, Stephen Skory wrote:
>> JC,
>>
>>> for k1 in range(0,size[0],1):
>>> for k2 in range(0,size[1],1):
>>> for k3 in range(0,size[2],1):
>>> if (density[k1,k2,k3]> Threshold):
>>> tmp[k1,k2,k3] = SomeValue
>>> else:
>>> tmp[k1,k2,k3] = 0.0
>>
>> Using Numpy array functions will make your life much better! Here is a
>> simple
>> example below that I think is roughly what you want to do. It should
>> at least
>> get you started down the right path. Luckily, 'density' is already a
>> numpy array
>> when it gets read in, so you're good to go!
>>
>>
>> In [1]: import numpy as np
>>
>> In [2]: a = np.random.random((2,2,2))
>>
>> In [3]: a
>> Out[3]:
>> array([[[ 0.97104489, 0.25985399],
>> [ 0.02646919, 0.50027277]],
>>
>> [[ 0.21725962, 0.19100341],
>> [ 0.96593371, 0.65269835]]])
>>
>> In [4]: big = (a> 0.5)
>>
>> In [5]: small = (a<= 0.5)
>>
>> In [6]: b = big * 0.7 + small * 0
>>
>> In [7]: b
>> Out[7]:
>> array([[[ 0.7, 0. ],
>> [ 0. , 0.7]],
>>
>> [[ 0. , 0. ],
>> [ 0.7, 0.7]]])
>>
>>
>>
>>
>> _______________________________________________________
>> sskory at physics.ucsd.edu o__ Stephen Skory
>> http://physics.ucsd.edu/~sskory/ _.>/ _Graduate Student
>> ________________________________(_)_\(_)_______________
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
More information about the yt-users
mailing list