矩阵行彼此相乘以及与另一个列表相乘
Multiplication of matrix rows with each other and with another list
我正在尝试将包含体素大小的矩阵与单个数字列表(包含体素数量)相乘。像这样:
a = [(1, 2, 3), (2, 3, 4)]
b = [5, 6]
hocuspocus = [1 * 2 * 3 * 5, 2 * 3 * 4 * 6] = [30, 144]
因为我需要提供以立方毫米为单位的体素,所以我需要将每个矩阵行的内容相互相乘,然后与列表 b 相乘。在 python 中还没有想出如何做到这一点。有没有人有什么建议?谢谢
你可以做这样的事情,它使用 prod()
函数将一行中的所有数字相乘并将它们减少为一个值,然后是此列表理解的 for
语句迭代两个列表 a
和 b
并将它们按元素相乘。
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]
我正在尝试将包含体素大小的矩阵与单个数字列表(包含体素数量)相乘。像这样:
a = [(1, 2, 3), (2, 3, 4)]
b = [5, 6]
hocuspocus = [1 * 2 * 3 * 5, 2 * 3 * 4 * 6] = [30, 144]
因为我需要提供以立方毫米为单位的体素,所以我需要将每个矩阵行的内容相互相乘,然后与列表 b 相乘。在 python 中还没有想出如何做到这一点。有没有人有什么建议?谢谢
你可以做这样的事情,它使用 prod()
函数将一行中的所有数字相乘并将它们减少为一个值,然后是此列表理解的 for
语句迭代两个列表 a
和 b
并将它们按元素相乘。
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]