[SciPy-User] 3D array problem in Python

Thøger Rivera-Thorsen thoger.emil at gmail.com
Sun Dec 30 10:47:07 EST 2012


Use np.where() or logical indexing (same thing, really) to mask your 
array, then perform the operations. Let's say your array is called A:

A[float(A) == 0.0] = 0.0

A[float(A) != 0.0] = [...etc.]


This, of course, only works if the operation for an entry doesn't depend 
on other entries in the array; but it should give you a great speed gain.

Cheers;

Emil



On 12/30/2012 04:32 AM, Happyman wrote:
> Hello
>
> I have 3 dimensional array  which I want  to calculate in a huge 
> process. Everything is working well if I use ordinary way which is 
> unsuitable in Python like the following:
>
> 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:
>                val11 [ i ] =0.0
>     else:
>                val11[ i ] [ j ], val22[ i ][ j ] = integrate.quad( 
> lambda x :  F1(x)*F2(x) , 0 , pi)
>
> But, this calculation takes so long time, let's say about  1 hour 
> (theoretically)... Is there any better way to easily and fast 
> calculate the process such as [ F( i ) for i in xlist ] or something 
> like that rather than using for loop?
>
>
>
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20121230/423baf68/attachment.html>


More information about the SciPy-User mailing list