慕容3067478
设置a = np.arange(25).reshape((5,5))你可以用keepdims与mean:a[a > a.mean(1, keepdims=True)] = 0array([[ 0, 1, 2, 0, 0], [ 5, 6, 7, 0, 0], [10, 11, 12, 0, 0], [15, 16, 17, 0, 0], [20, 21, 22, 0, 0]])使用keepdims=True, 给出以下结果mean:array([[ 2.], [ 7.], [12.], [17.], [22.]])文档中说明了这样做的好处:如果将其设置为 True,则减少的轴将作为尺寸为 1 的维度保留在结果中。使用此选项,结果将针对输入数组正确广播。
慕娘9325324
您可以使用np.mean(a, axis=1)来获取每行的平均值,将其广播到 的形状a,并将所有值设置a > broadcasted_mean_array为 0:示例:a = np.arange(25).reshape((5,5))>>> aarray([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]])a[a > np.broadcast_to(np.mean(a,axis=1),a.shape).T] = 0 >>> aarray([[ 0, 1, 2, 0, 0], [ 5, 6, 7, 0, 0], [10, 11, 12, 0, 0], [15, 16, 17, 0, 0], [20, 21, 22, 0, 0]])