我想把多维数据放在n x m
矩阵(<class 'numpy.matrixlib.defmatrix.matrix'>
)中,比如X
。我定义了一个新的数组ones(645)
,假设centVector
来产生矩阵X
中每一行的平均值。现在我要迭代X
中的每一行,计算平均值并将这个值赋给centVector
中的相应索引。这不可能在scipy/numpy的一行中实现吗?我不习惯这种语言,我会想:
centVector = ones(645)
for key, val in X:
centVector[key] = centVector[key] * (val.sum/val.size)
然后我只需要减去每一行的平均值:
^{pr2}$我该如何简化?
另外,上面的代码实际上不起作用—对于键值循环,我需要类似enumerate(X)
的代码。我不确定X - centVector
是否返回正确的解决方案。在
首先,一些示例数据:
numpy很方便地有一个
^{pr2}$mean
函数。但是,默认情况下,它将为您提供数组中所有值的平均值。由于需要每行的平均值,因此需要指定操作的axis
:注意,
axis=1
表示:沿列查找平均值(对于每一行),其中0=行,1=列(依此类推)。现在,你可以像原来一样,从你的X
中减去这个平均值。在主动建议
通常,最好避开matrix类(see docs)。如果从示例数据中删除
np.matrix
调用,则得到一个普通的numpy数组。不幸的是,在这种特殊情况下,使用数组会稍微复杂一些,因为
np.mean
将返回一个1D数组:如果您尝试从
X
中减去此值,r_means
将广播到行向量,而不是列向量:因此,您必须将1D数组重塑为
N x 1
列向量:传递给
-1
的-1
告诉numpy根据原始数组形状和新数组的其余维度计算出这个维度。或者,您可以使用r_means[:, np.newaxis]
重塑数组。在相关问题 更多 >
编程相关推荐