如何在不使用 NumPy 或 .dot 的情况下在 python 中点积一维和二维列表?
How to dot product 1D and 2D lists in python without using NumPy or .dot?
对于给定的二维和一维列表,我必须对它们进行点积。但是我必须在不使用 .dot
.
的情况下计算它们
例如,我想制作这些列表
matrix_A = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]]
vector_x = [0, 1, 2, 3]
到此输出
result_list = [ 14 38 62 86 110 134 158 182]
如何在 python 中仅使用列表(不使用 NumPy array
和 .dot
)?
您可以使用带有嵌套 for 循环的列表理解。
matrix_A = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]]
vector_x = [0, 1, 2, 3]
result_list = [sum(a*b for a,b in zip(row, vector_x)) for row in matrix_A]
print(result_list)
输出:
[14, 38, 62, 86, 110, 134, 158, 182]
编辑:删除了@fshabashev 评论后的列表理解中的方括号。
如果你不介意使用 numpy,这是一个解决方案
import numpy as np
matrix_A = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]]
vector_x = [0, 1, 2, 3]
res = np.sum(np.array(matrix_A) * np.array(vector_x), axis=1)
print(res)
对于给定的二维和一维列表,我必须对它们进行点积。但是我必须在不使用 .dot
.
例如,我想制作这些列表
matrix_A = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]]
vector_x = [0, 1, 2, 3]
到此输出
result_list = [ 14 38 62 86 110 134 158 182]
如何在 python 中仅使用列表(不使用 NumPy array
和 .dot
)?
您可以使用带有嵌套 for 循环的列表理解。
matrix_A = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]]
vector_x = [0, 1, 2, 3]
result_list = [sum(a*b for a,b in zip(row, vector_x)) for row in matrix_A]
print(result_list)
输出:
[14, 38, 62, 86, 110, 134, 158, 182]
编辑:删除了@fshabashev 评论后的列表理解中的方括号。
如果你不介意使用 numpy,这是一个解决方案
import numpy as np
matrix_A = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]]
vector_x = [0, 1, 2, 3]
res = np.sum(np.array(matrix_A) * np.array(vector_x), axis=1)
print(res)