你想要得到平均值/中位数/众数沿着前两个轴。这应该有效:
data = np.random.randint(1000, size=(500, 300, 3))
>>> np.mean(data, axis=(0, 1)) # in nunpy >= 1.7
array([ 499.06044 , 499.01136 , 498.60614667])
>>> np.mean(np.mean(data, axis=0), axis=0) # in numpy < 1.7
array([ 499.06044 , 499.01136 , 498.60614667])
>>> np.median(data.reshape(-1, 3), axis=0)
array([ 499., 499., 498.]) # mode
>>> np.argmax([np.bincount(x) for x in data.reshape(-1, 3).T], axis=1)
array([240, 519, 842], dtype=int64)
注意np.median
需要一个展平的数组,因此需要重塑。 bincount 只处理一维输入,因此需要列表理解,再加上一些用于解包的转置魔法。