gpt4 book ai didi

python - python中矩阵的逐元素运算

转载 作者:太空狗 更新时间:2023-10-29 21:45:37 25 4
gpt4 key购买 nike

假设我有一个这样的矩阵:

matrix1 = [[11,12,13,14,15,16,17],[21,22,23,24,25,26,27],[31,32,33,34,35,36,37],
[41,42,43,44,45,46,47],[51,52,53,54,55,56,57],[61,62,63,64,65,66,67],
[71,72,73,74,75,76,77]]

我想创建一个函数,它接受两个矩阵并进行逐点乘法。 (不使用 numpy)

我已经看到一些关于使用 zip 的东西,但那似乎对我不起作用。我认为这是因为我的列表是列表而不是单个列表。

我的代码:

def pointwise_product(a_matrix, a_second_matrix):
# return m[i][j] = a_matrix[i][j] x a_second_matrix[i][j]
return [i*j for i,j in zip(a_matrix,a_second_matrix)]

Matrix1 可以作为两个参数插入此处。名为 display_matrix 的第二个函数将采用此函数并在新行上显示列表的每个元素,但这超出了这个问题的范围。

我的猜测是我需要一些列表理解或 lambda 函数,但我对 Python 还太陌生,无法完全掌握它们。

最佳答案

由于您有一个二维列表,因此您将需要一个嵌套理解。您可以使用以下内容:

[[i * j for i, j in zip(*row)] for row in zip(matrix1, matrix2)]

这将导致您的示例如下 (matrix1 * matrix1):

[[121, 144, 169, 196, 225, 256, 289], 
[441, 484, 529, 576, 625, 676, 729],
[961, 1024, 1089, 1156, 1225, 1296, 1369],
[1681, 1764, 1849, 1936, 2025, 2116, 2209],
[2601, 2704, 2809, 2916, 3025, 3136, 3249],
[3721, 3844, 3969, 4096, 4225, 4356, 4489],
[5041, 5184, 5329, 5476, 5625, 5776, 5929]]

关于python - python中矩阵的逐元素运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com