我试图确保每一行对于任意维数的矩阵都有零均值。但是,我得到IndexError:运行下面的代码时,索引2超出了大小为2的轴0的界限。我只是在Z的维度内迭代值,所以我不知道如何尝试在Z的维度外建立索引
import numpy as np
def center_rows(Z):
"""Ensures each row has zero mean.
Takes a matrix of arbitrary shape and subtracts from each row the mean value of that row."""
Zc = Z
for row in Z:
avg = np.mean(Z[row])
Zc[row] = Z[row] - avg
return Zc
只是一个想法,但通常你不想在Numpy数组上使用python循环。您可以使用Numpy得到0表示的行,这在理想情况下可以跳过循环
另外,我并不是最了解事物如何工作的人,但是
Zc = Z
可能只是指向同一个数组。至少在我测试它的时候,修改其中一个修改另一个,所以可能添加。你知道吗会有帮助的。你知道吗
Edit:[:,None]只是向mean数组添加了一个额外的维度。你可以很容易地测试它。你知道吗
通过具有相同的维数,可以直接从数组中减去平均值,而无需for循环。你知道吗
相关问题 更多 >
编程相关推荐