矩阵行彼此相乘以及与另一个列表相乘

2024-10-01 13:43:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试将包含体素大小的矩阵与单个数字列表(包含体素的数量)相乘。大概是这样的:

a = [(1, 2, 3), (2, 3, 4)]
b = [5, 6]

hocuspocus = [1 * 2 * 3 * 5, 2 * 3 * 4 * 6] = [30, 144]

因为我需要以立方毫米为单位提供体素,所以我需要将每个矩阵行的内容彼此相乘,然后与列表b相乘。还没有弄明白如何在python中实现这一点。有人有什么建议吗?谢谢


Tags: 内容列表数量单位矩阵数字建议体素
1条回答
网友
1楼 · 发布于 2024-10-01 13:43:27

您可以这样做,它使用prod()函数将一行中的所有数字相乘,并将它们减少为一个值,然后此列表理解的for语句迭代两个列表ab并按元素相乘

Python 3.7或更高版本

from functools import reduce  # Required in Python 3.
from operator import mul

def prod(iterable): # This function multiplies all numbers of a row.
    return reduce(mul, iterable, 1)
    
a = [(1, 2, 3), (2, 3, 4)]
b = [5, 6]
    
out = [prod(row) * elem for row, elem in zip(a, b)]

print(out)

Python 3.8+

或者,您可以在math模块中使用本机prod()函数

from math import prod
    
a = [(1, 2, 3), (2, 3, 4)]
b = [5, 6]
    
out = [prod(row) * elem for row, elem in zip(a, b)]

print(out)

输出:

[30, 144]

相关问题 更多 >