我有一个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
答案 0 :(得分:0)
当然" pythonic"解决这个问题的方法是:
def safe_max(ar,default=np.nan):
try:
return np.max(ar)
except ValueError:
return default
x = safe_max(foo,0)
考虑到未定义空序列的最大值,这似乎也是最合乎逻辑的方法。