python - 如何使用 `numpy` 将一列和一个矩阵组合成一个更大的矩阵?

标签 python numpy

我尝试通过对每一行执行(X - 均值)/方差来标准化矩阵。

由于我使用 MapReduce 实现此功能,因此我首先计算每列的均值和标准方差,然后使用以下方法映射每一行:

   matrix.map(lambda X: (X - means) / variance)

但我想忽略每行中的第一个元素 X,这是我的目标列,仅包含 1 和 0。

我该怎么做?

最佳答案

如果A是形状(m, n + 1)的numpy数组,并且您还有数组mus2形状 (n,) 保存除第一列之外的每列的均值和方差,您可以按如下方式进行归一化:

A[:, 1:] = (A[:, 1:] - mu) / s2

要了解事情的进展,您需要了解如何broadcasting作品。由于 A[:, 1:] 具有形状 (m, n) 以及 mus2 形状 (n,),最后两个在其形状前面添加了 1 以匹配第一个的维度,因此它们被视为 (1, n) 数组,并且在算术过程中操作的第一行也是唯一一行中的值被广播到所有行。

如果您还没有这样做,您的均值和方差数组可以有效地计算为

mu = (A[:, 1:].mean(axis=0)
s2 = A[:, 1:].var(axis=0)

对于您可能想要使用 np.std 平方来利用 ddof 参数的方差,请参阅 docs .

另外说明,normalization通常除以标准差,而不是方差。

关于python - 如何使用 `numpy` 将一列和一个矩阵组合成一个更大的矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018855/

相关文章:

python - 脚本只有在我重新启动 shell 时才有效

python - 将 N 维 numpy 数组拆分为多个一维数组

python - Numpy dot 对对称乘法太聪明了

python - 当我尝试 reshape numpy 数组时,为什么 memmap 需要文件名?

python - 将风向分为几类

python - 如何使用 Python3 在 CQL 中准备 SELECT 查询?

python线程仅在加入后打印到stdout

python - 安装 Gensim 时出错 : "Could not import setuptools which is required to install from a source distribution."

python - numpy dtype int 类型错误

python - 如何将图像集合中的像素(R、G、B)映射到不同的像素颜色值索引?