numpy ufunc redurs的标识值

时间:2014-11-06 19:07:40

标签: python numpy

我有一个numpy数组,我想找到它的最大元素,所以我打电话给:

x = foo.max()

问题是foo有时是一个空数组,max函数(可以理解)抛出:

ValueError: zero-size array to reduction operation maximum which has no identity

这引出了我的问题:

有没有办法为还原操作提供标识值? (理想情况下,这个方法适用于使用reduce方法的任意numpy ufunc。)或者我坚持这样做:

if foo.size > 0:
  x = foo.max()
else:
  x = 0  # or whatever identity value I choose

1 个答案:

答案 0 :(得分:0)

当然" pythonic"解决这个问题的方法是:

def safe_max(ar,default=np.nan):
    try:
        return np.max(ar)
    except ValueError:
        return default

x = safe_max(foo,0)

考虑到未定义空序列的最大值,这似乎也是最合乎逻辑的方法。