[SciPy-user] array vs matrix, converting code from matlab

Travis Oliphant oliphant at ee.byu.edu
Thu Apr 20 13:28:26 CDT 2006


Gennan Chen wrote:

>Hi! All,
>
>I am also in the same process. And I would like to add one more  
>question:
>
>In Matlab, for a 3D array or matrix, the indexing is a(i,j,k). In  
>numpy, it became a[k-1,i-1,j-1]. Is there any way to make it become
>a[i-1,j-1,k-1]? Or I am doing something wrong here??
>
>  
>

In NumPy, arrays and matrices are by default in  C-contiguous order so 
that the last index varies the fastest.    Matlab is based on Fortran 
originally and defines arrays in Fortran-contiguous order (the first 
index varies the fastest as you walk linearly throught memory).     The 
only time this really matters is if you are interfacing with some 
compiled code.   Otherwise, how you think about indexing is up to you 
and how you define the array.

So,  to make it a[i-1,j-1,k-1] you need to reshape the array from the 
way you defined it in MATLAB.    It really does just depend on how you 
define things.  Perhaps you could give a specific example  so we could 
be more specific on how you would write the same thing in NumPy.

-Travis



More information about the SciPy-user mailing list