【问题标题】:how to normalize a numpy array in python如何在python中规范化一个numpy数组
【发布时间】:2016-05-16 19:47:56
【问题描述】:

我有以下 numpy 数组:

from sklearn.decomposition import PCA
from sklearn.preprocessing import normalize
import numpy as np

# Tracking 4 associate metrics
# Open TA's, Open SR's, Open SE's
associateMetrics = np.array([[111,  28,  21],
   [ 27,  17,  20],
   [ 79,  23,  17],
   [185, 125,  50],
   [155,  76,  32],
   [ 82,  24,  17],
   [127,  63,  33],
   [193,  91,  63],
   [107,  24,  17]])

现在,我想对每个“列”进行规范化,使值介于 0 和 1 之间。我的意思是,例如,第一列中的值应该介于 0 和 1 之间。

我该怎么做?

normed_matrix = normalize(associateMetrics, axis=1, norm='l1')

上面给了我按行归一化

【问题讨论】:

  • "上述方法有效吗?"你试过了吗?
  • 你想将每一列除以它的最大值吗?
  • 我想我有我的答案。我尝试将axis = 0设置为有效。我猜文档对我来说不是很清楚...scikit-learn.org/stable/modules/generated/…

标签: python arrays numpy normalization data-science


【解决方案1】:

我可以使用以下方法做到这一点:

normalized_metrics = normalize(associateMetrics, axis=0, norm='l1')

【讨论】:

  • scipy 中的轴指定您正在处理的维度。对于 2D 数据 (matrxi),axis = 0 表示跨行,axis = 1 表示跨列。 docs.scipy.org/doc/numpy-1.10.1/glossary.html
  • 谢谢!如果我可以问一个额外的问题。如何将每一列乘以不同的标量值?我想要做的是为每一列分配不同的权重。我应该在 normalizaiotn 之后这样做吗?如果是,如何?抱歉,我对 python 有点陌生
  • 您可以使用 numpy.multiply 将权重向量与矩阵相乘。也许np.multiply(v, m) 其中v 是你的向量,m 是你的矩阵。 docs.scipy.org/doc/numpy-1.10.1/reference/generated/…
  • 抱歉,对于逐列乘法,您可能需要np.multiply(v, m.transpose()).transpose()
猜你喜欢
  • 2012-02-12
  • 2015-06-22
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2017-05-25
相关资源
最近更新 更多