【发布时间】:2015-11-28 05:53:51
【问题描述】:
import numpy as np
np.random.random((5,5))
array([[ 0.26045197, 0.66184973, 0.79957904, 0.82613958, 0.39644677],
[ 0.09284838, 0.59098542, 0.13045167, 0.06170584, 0.01265676],
[ 0.16456109, 0.87820099, 0.79891448, 0.02966868, 0.27810629],
[ 0.03037986, 0.31481138, 0.06477025, 0.37205248, 0.59648463],
[ 0.08084797, 0.10305354, 0.72488268, 0.30258304, 0.230913 ]])
我有一个 2D numpy 数组,每个单元格值代表一个分数(介于 0.0 和 1.0 之间)。我想修改二维数组,使数组平均值匹配一个特定的数字,比如 0.8。为此,我想使用 foll。算法:
计算二维数组的平均值。假设给定的二维数组是 0.6
对于网格中的每个单元格(例如值为 0.25),将其值增加/减少等于(0.8 - 0.6 即 0.2)的量。
如果在第 2 步中,更改使单元格值超出 0.0/1.0,则将值设置为 0.0/1.0 并修改其他单元格进行补偿。
我可以像这样执行第 1 步:
numpy.mean(arr)
我可以使用 for 循环执行第 2 步,但不知道如何执行第 3 步。另外,更喜欢 Python 的方式。
【问题讨论】: