我是Python新手。 我有一个二维np.array(例如50行和12列),当第1列== x和第9列== y时,我需要第3列的均值。 如果不使用ifs,我不知道该怎么办...
任何帮助将不胜感激。
答案 0 :(得分:1)
我们假设您的数组称为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()
答案 1 :(得分:1)
您可以使用np.where()
:
x = 1
y = 2
a[np.where((a[:, 0] == x) & (a[:, 8] == y)), 3].mean()
答案 2 :(得分:0)
我解决了以下问题(感谢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()