On 03/29/2011 09:35 AM, Pearu Peterson wrote:
On Tue, Mar 29, 2011 at 8:13 AM, Pearu Peterson
<[email protected] <mailto:[email protected]>> wrote:
On Mon, Mar 28, 2011 at 10:44 PM, Sturla Molden <[email protected]
<mailto:[email protected]>> wrote:
Den 28.03.2011 19:12, skrev Pearu Peterson:
>
> FYI, f2py in numpy 1.6.x supports also assumed shape arrays.
How did you do that? Chasm-interop, C bindings from F03, or
marshalling
through explicit-shape?
The latter.
Basically, if you have
subroutine foo(a)
real a(:)
end
then f2py automatically creates a wrapper subroutine
subroutine wrapfoo(a, n)
real a(n)
integer n
!f2py intent(in) :: a
!f2py intent(hide) :: n = shape(a,0)
interface
subroutine foo(a)
real a(:)
end
end interface
call foo(a)
end
that can be wrapped with f2py in ordinary way.
Can f2py pass strided memory from NumPy to Fortran?
No. I haven't thought about it.
Now, after little bit of thinking and testing, I think supporting
strided arrays in f2py
is easily doable. For the example above, f2py just must generate the
following wrapper subroutine
subroutine wrapfoo(a, stride, n)
real a(n)
integer n, stride
!f2py intent(in) :: a
!f2py intent(hide) :: n = shape(a,0)
!f2py intent(hide) :: stride = getstrideof(a)
interface
subroutine foo(a)
real a(:)
end
end interface
call foo(a(1:stride:n))
end
I think it should be a(1:n*stride:stride) or something.
Dag Sverre
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion