作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
基本上我有一个数组,它可以在任意两个数字之间变化,我想在将其限制在 [0,1] 空间内的同时保留分布。执行此操作的功能非常简单。我通常写成:
def to01(array):
array -= array.min()
array /= array.max()
return array
当然,它可以而且应该更复杂地考虑大量情况,例如所有值都相同(除以零)和 float 与整数除法(使用 np.subtract 和 np.divide 而不是运算符).但这是最基本的。
问题是我经常在我的项目中跨项目执行此操作,这似乎是一个相当标准的数学运算。 NumPy 中是否有执行此操作的内置函数?
最佳答案
不知道是否有一个内置的(可能没有,按原样做并不是一件很难的事情)。您可以使用 vectorize
将函数应用于数组的所有元素:
def to01(array):
a = array.min()
# ignore the Runtime Warning
with numpy.errstate(divide='ignore'):
b = 1. /(array.max() - array.min())
if not(numpy.isfinite(b)):
b = 0
return numpy.vectorize(lambda x: b * (x - a))(array)
关于python - NumPy 数组以 0 和 1 为界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796309/
我是一名优秀的程序员,十分优秀!