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

我是 Python 新手。我有一个 2D np.array(例如 50 行和 12 列),当第一列==x 和第九列==y 时,我需要第三列的平均值。如果不使用ifs,我无法弄清楚如何做到这一点......

任何帮助,将不胜感激。


元芳怎么了
浏览 463回答 3
3回答

白板的微信

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

凤凰求蛊

您可以使用np.where():您可以使用np.where():x = 1y = 2a[np.where((a[:, 0] == x) & (a[:, 8] == y)), 3].mean() 

一只萌萌小番薯

我解决了如下问题(感谢 Kasrâmvd):mask1 = arr[:, 0] == x  # 1st column==xmask1 = arr[:, 8] == y  # 9th column==yfinal_mask = np.logical_and(mask1, mask2)filtered_arr = arr[final_mask,:]mean_3rd_column = filtered_arr[:,2].mean()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python