Pvlib-python: scalar inputs yield ndim=0 array outputs

Created on 19 Jan 2019  路  4Comments  路  Source: pvlib/pvlib-python

Describe the bug
pvlib has a policy that the output type should be as similar as possible to the input type. So, for all scalar input, most functions should return a scalar output. However, some functions return ndim=0 array outputs instead of true scalars. I know this happens with irradiance.perez, but I think it happens with a handful of functions.

To Reproduce

    out = irradiance.perez(40, 180, 118.45831879, 939.95469881,
                           1321.1655834833093, 10.56413562, 144.76567754,
                           1.01688136)
    assert np.isscalar(out)

Expected behavior
The function should return a scalar, not an ndim=0 array.

Versions:

  • pvlib.__version__: 0.6.0
  • pandas.__version__: many

    • numpy.__version__: many

  • python: many

Additional context
We've previously discussed creating utility functions and decorators to handle type issues like this one. See #635 for example.

The first thing we need to do is catalog which functions exhibit this behavior.

api bug

All 4 comments

I recently got bit by this too in scipy

@mikofski Thanks for pushing on that vectorized newton in scipy, it has been quite useful. I am a bit concerned about the different output formats in the scalar vs. vectorized cases, however. Seems like that leads to the same issue we are discussing here.

Thanks @markcampanelli for raising the issue with numpy and bringing it to my attention here. I'm less convinced that we should put much effort into it within pvlib.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

CameronTStark picture CameronTStark  路  3Comments

wholmgren picture wholmgren  路  6Comments

Gemmu picture Gemmu  路  4Comments

wholmgren picture wholmgren  路  5Comments

mikofski picture mikofski  路  5Comments