编辑 numpy 矩阵中的每个值

Editing every value in a numpy matrix

我有一个 numpy 矩阵,其中填充了来自 *.csv 文件的数据

csv = np.genfromtxt (file,skiprows=22)
matrix = np.matrix(csv)

这是一个 64x64 矩阵,看起来像

print matrix
[[...,...,....]
[...,...,.....]
.....
]]

现在我需要对每个值取对数 math.log10() 并将其保存到另一个 64x64 矩阵中。 我怎样才能做到这一点?我试过了

matrix_lg = np.matrix(csv)
    for i in range (0,len(matrix)):
        for j in range (0,len(matrix[0])):
            matrix_lg[i,j]=math.log10(matrix[i,j])

但这只编辑了我初始矩阵的第一个数组(即第一行)。 这是我第一次使用 python,我开始感到困惑。

你可以这样做:

matrix_lg = numpy.log10(matrix)

它会为您完成。以这种矢量化方式执行它也比遍历 python 中的每个条目要快得多。它还将更优雅地处理域错误。

FWIW 但是,您发布的代码的问题是矩阵的 len() 与嵌套列表的工作方式并不完全相同。正如评论中所建议的,您可以只使用 matrix.shape 来获得适当的暗淡来迭代:

matrix_lg = np.matrix(csv)
for i in range(0,matrix_lg.shape[0]):
    for j in range(0,matrix_lg.shape[1]):
        matrix_lg[i,j]=math.log10(matrix_lg[i,j])