Python中二维数组的对数

Fra*_*ank 3 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)
Run Code Online (Sandbox Code Playgroud)

R.y*_*yan 5

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

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

或者你可以使用wherenumpy

例:

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

它将忽略所有零元素.