【发布时间】:2015-03-04 07:46:04
【问题描述】:
我想在 python 中规范化(放入范围 [0, 1])一个二维数组,但相对于特定列。
例如,给定:
a = array([[1 2 3],[4,5,6],[7,8,9]])
我需要类似“norm_column_wise(a,1)”的东西,它采用矩阵“a”,并且只对第二列 [2,5,8] 进行归一化,
结果应该是:
norm_column_wise(a,1) = array([[1,0,3],[4,0.5,6],[7,1.0,9]])
我写了一个简单的规范化代码:
def norm_column_wise(arr):
return (arr-arr.min(0))/(arr.max(0)-arr.min(0))
但它适用于数组的所有列。如何修改这个简单的代码以指定特定的列?
提前致谢!
【问题讨论】:
-
这里的标准化是什么意思?我不明白为什么 [2,5,8] 会被标准化为 [0,0.5,1.0],如您的示例中所示。
-
@physicalattraction,感谢您的评论。这是从 [a,b] -> [0,1] 的简单缩放。它由 (Z-min(Z))/(max(Z)-min(Z)) 完成。
-
在我的情况下 min = 2,max = 8,所以 ([2,5,8] - [2,2,2])/6 = [0,0.5,1.]跨度>
标签: python arrays numpy normalization