为了账号安全,请及时绑定邮箱和手机立即绑定

计算二维 numpy 数组的条件列平均值

计算二维 numpy 数组的条件列平均值

元芳怎么了 2021-06-18 17:51:12
我是 Python 新手。我有一个 2D np.array(例如 50 行和 12 列),当第一列==x 和第九列==y 时,我需要第三列的平均值。如果不使用ifs,我无法弄清楚如何做到这一点......任何帮助,将不胜感激。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

假设您的数组被称为arr。在这种情况下,您希望先应用两个不同的过滤器,然后再应用1st column==x第二个9th column==y。首先,您应该单独创建每个过滤器(掩码),然后根据它们与预期输出之间的逻辑关系来查看您想对它们做什么。


mask1 = arr[:, 0] == x  # 1st column==x

mask1 = arr[:, 8] == y  # 9th column==y

现在,您可以使用or、and或任何其他逻辑运算符来创建最终掩码,在本例中为and. 为此,您可以在 numpy 中使用逻辑函数。


final_mask = np.logical_and(mask1, mask2)

最后,您需要final_mask做的就是根据您要执行的计算过滤您的数组:


filtered_3rd_column = arr[:, final_mask]

_mean = filtered_3rd_column.mean()


查看完整回答
反对 回复 2021-06-29
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您可以使用np.where()

您可以使用np.where():


x = 1

y = 2

a[np.where((a[:, 0] == x) & (a[:, 8] == y)), 3].mean() 


查看完整回答
反对 回复 2021-06-29
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我解决了如下问题(感谢 Kasrâmvd):


mask1 = arr[:, 0] == x  # 1st column==x

mask1 = arr[:, 8] == y  # 9th column==y


final_mask = np.logical_and(mask1, mask2)


filtered_arr = arr[final_mask,:]

mean_3rd_column = filtered_arr[:,2].mean()


查看完整回答
反对 回复 2021-06-29
  • 3 回答
  • 0 关注
  • 462 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号