在某些条件下,在两个数组之间的(项目)比率中查找最大值或最小值

2024-04-26 13:02:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个np.array x和y,希望找到y[I]大于0的比率x[I]/y[I]的最小值,即:

x = np.array([1,2,3,4,5])
y = np.array([-1,0,1,2,3])
minimumratio(x,y)

应该返回5/3

仅使用min(x/y)将产生-1,并且可能会遇到除以0的错误


Tags: 错误npminarray比率minimumratio
1条回答
网友
1楼 · 发布于 2024-04-26 13:02:09

我以以下方式贯穿您的任务:在结果仍然为正的条件下,找到x/y的最小值

因此,我会屏蔽数组,去掉所有我们不想考虑的情况,例如一个数字是否定的,或者^ {CD2>}的元素是零。p>

您可以通过将数组中的位置设置为np.nan来实现这一点:

x = np.array([1,2,3,4,5], dtype=np.float)
y = np.array([-1,0,1,2,3], dtype=np.float)

y_cleared = np.copy(y)
y_cleared[y == 0] = np.nan # get rid of zeros
y_cleared[y < 0] = np.nan # get rid of negative values
y_cleared[x < 0] = np.nan # get rid of negative values
y_cleared
>>> array([nan, nan,  1.,  2.,  3.])

还有一些特殊的numpy方法可以处理数组并忽略np.nan,如:

np.nanmin(x/y_cleared)
>>> 1.6666666666666667

相关问题 更多 >