[SciPy-Dev] fwrap refactor: Emulating f2py array shape handling?

Dag Sverre Seljebotn dagss@student.matnat.uio...
Wed Dec 8 07:26:55 CST 2010

In the ongoing fwrap refactor I'm trying hard to emulate f2py 
completely. Still it'd be good to know whether you consider the 
behaviour of f2py a feature or a mis-feature. If the latter, it'd be 
trivial to, e.g., include a flag that would allow people to experiment 
with fwrap vs. f2py behaviour, and change to the former at some point if 
the fwrap refactor is pulled upstream.

The question is how functions should deal with arrays of a different 
rank than what they expect. Possibilities:

f2py behaviour: Go to very great lengths to convert array shapes. Assume 
the function to be called wants a 2D array, then:

  - Array of shape (1, 1, 3, 1, 1, 4, 1) is treated as (3, 4) # ignore 
  - (1, 1, 3, 1, 5, 6) => (3, 30) # flatten trailing dimensions
  - (3) -> (3, 1) # pad with 1-length dims on right side
  - I think there's more...

fwrap behaviour: Simply raise exception if the rank and dimension does 
not match.

My opinion: I think f2py is going too far, and would prefer something 
that is closer to the simpler broadcasting rules of NumPy ("Explicit is 
better than implicit"). Perhaps allow (3,) -> (3, 1), but not the others...

Dag Sverre

More information about the SciPy-Dev mailing list