假设我有两个 ndarray 定义:
import numpy as np
mask = np.array([[1,1],[1,2]])
values = np.array([[1., 3.],[2., 2.]])
我的目标是根据 mask
中的整数指示的掩模区域计算值的平均值。当然,我会使用 for 循环:
out = np.zeros(len(np.unique(mask)))
for j,i in enumerate(np.unique(mask)):
out[j] = np.nanmean(values[mask==i])
但是,对于大型多维数组,这种序列化解决方案变得非常慢。有没有办法有效地矢量化这个操作?提前感谢您的帮助!
最佳答案
您可以使用np.bincount
:
unq,inv,cnt = np.unique(mask,return_inverse=1,return_counts=1)
np.bincount(inv,values.ravel())/cnt
# array([2., 2.])
关于python - 有没有一种方法可以将均值函数矢量化到 ndarray 中的屏蔽区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62885793/