【发布时间】:2020-05-05 04:00:47
【问题描述】:
我遇到一个案例,当我尝试在一个空的 numpy 数组中使用 np.max() 时,它会报告此类错误消息。
# values is an empty numpy array here
max_val = np.max(values)
ValueError: 零大小数组到没有标识的归约操作最大值
所以我认为解决它的方法是在调用np.max() 之前先尝试处理空的numpy数组,如下所示:
# add some values as missing values on purposes.
def deal_empty_np_array(a:np.array):
if a.size == 0:
a = np.append(a, [-999999, -999999])
return a
values = deal_empty_np_array(values)
max_val = np.max(values);
或者使用像link 这样的try catch 方式。
所以我想知道对于这种尴尬的情况是否有更好的解决方案。
提前致谢。
PS: 很抱歉之前没有给出清晰的描述。
【问题讨论】:
-
对我来说,您的代码没有多大意义,因为第一个:您似乎分配了一些命名列(熊猫数据框?),但
time_diff将是一个 numpy 数组。第二,你从来没有指定time_dif_rat,这是什么? -
@NicoAlbers Albers 抱歉,这段代码有错误。我之前在运行的地方已经更正了,但是发布了错误的版本。
-
你能举一个最低工作(或不工作)的例子吗?看来你还是搞砸了
time_diff是一个数组还是一个数据框? -
我不确定这里到底是什么问题。是的,在空数组上调用
numpy.max()会引发错误。只需检查数组是否为空,如果它不调用max()就可以了。
标签: python arrays python-3.x numpy