On Aug 2, 2015 11:06 PM, "Kang Wang" <kwan...@wisc.edu> wrote:
>
> This is very good discussion. Thank you all for replying.
>
> I can see the fundamental difference is that I always
think/talk/read/write a 3D image as I(x, y, z), not (plane, row, column) .
I am coming from MRI (magnetic resonance imaging) research, and I can
assure you that the entire MRI community is using (x, y, z), including
books, journal papers, conference abstracts, presentations, everything. We
even talk about what we called "logical x/y/z" and "physical x/y/z", and
the rotation matrix that converts the two coordinate systems. The
radiologists are also used to (x, y, z). For example, we always say "my
image is 256 by 256 by 20 slices", and we never say "20 by 256 by 256".
>
> So, basically, at least in MRI, we always talk about an image as I(x, y,
z), and we always assume that "x" is the fastest changing index. That's why
I prefer column-major (because it is more natural).
>
> Of course, I can totally get my work done by using row-major, I just have
to always remind myself "write last dimension index first" when coding. I
actually have done this before, and I found it would be so much easier if
just using column-major.

Why not just use I[x, y, z] like you're used to, and let the computer worry
about the physical layout in memory? Sometimes this will be Fortran order
and sometimes C order and sometimes something else, but you don't have to
know or care; 99% of the time it doesn't matter. The worst case is that
when you use a python wrapper to call into a library that can only handle
Fortran order, then the wrapper will quietly have to convert the memory
order around and it will be slightly slower than if you had used Fortran
order in the first place. But in practice you'll barely ever notice this,
and when you do, *then* you can tell numpy explicitly what memory layout
you want in the situation where it matters.

General principle: do what's easiest for the programmer, not what's easiest
for the computer.

-n
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to