python矩阵操作 - 对每个元素进行平方

时间:2013-12-05 08:14:24

标签: python list matrix list-comprehension

如何使用以下矩阵:

矩阵= [[2,0,2],[0,2,0],[2,0,2]]并将其转换为[[4,0,4],[0,4,0] ,[4,0,4]]

列表中的所有元素都变为平方?我正在尝试列表理解。

4 个答案:

答案 0 :(得分:5)

使用列表理解:

>>> lis = [[2,0,2],[0,2,0],[2,0,2]]
>>> [[y**2 for y in x] for x in lis]
[[4, 0, 4], [0, 4, 0], [4, 0, 4]]

答案 1 :(得分:2)

使用numpy

import numpy as np

matrix = [[2,0,2],[0,2,0],[2,0,2]]
np_matrix = np.array(matrix)
np_matrix**2

列表理解可能看起来像这样

matrix2 = [
    [e*e for e in l]
    for l in matrix
]

答案 2 :(得分:2)

列表推导可以嵌套:

sqd = [[elem*elem for elem in inner] for inner in outer]

在这种情况下,outer将是您的矩阵matrix

>>>> matrix = [[2,0,2],[0,2,0],[2,0,2]]
>>>> sqd = [[elem*elem for elem in inner] for inner in matrix]
>>>> sqd
[[4, 0, 4], [0, 4, 0], [4, 0, 4]]

答案 3 :(得分:0)

如果你的意思是

matrix = [[2,0,2],[0,2,0],[2,0,2]]

列表列表,然后执行以下操作

import numpy as np
np.square(matrix)

这为您提供如下输出:

array([[4, 0, 4],
       [0, 4, 0],
       [4, 0, 4]], dtype=int32)

但是,如果你真的认为它是一个矩阵,你必须首先创建一个矩阵,如下所示:

X = np.matrix('2 0 2; 0 2 0;  2 0 2')

然后按照上面的说法进行操作,即

np.square(X)

这为您提供了所需的输出,如下所示:

[[4 0 4]
 [0 4 0]
 [4 0 4]]