首页 > 解决方案 > Python中二维数组的对数

问题描述

我有一个名为矩阵的二维数组数组。那里的每个矩阵都有维度1000 x 1000并且由正值组成。现在我想记录所有矩阵中的所有值(0 除外)。
我如何在python中轻松做到这一点?
我有以下代码可以满足我的要求,但是知道 Python 可以更简短:

newMatrices = []
for matrix in matrices:
    newMaxtrix = []
    for row in matrix:
        newRow = []
        for value in row:
            if value > 0:
                newRow.append(np.log(value))
            else:
                newRow.append(value)
        newMaxtrix.append(newRow)
    newMatrices.append(newMaxtrix)

标签: python

解决方案


您可以将其转换为 numpy 数组并用于numpy.log计算值。

对于 0 值,结果将为-Inf. 之后,您可以将其转换回列表并将其替换为-Inf0

或者你可以where在 numpy中使用

例子:

res = where(arr!= 0, log2(arr), 0)

它将忽略所有零元素。


推荐阅读