Python - 列表列表中的列乘积


列乘积指的是数据集特定列中所有值的乘积结果。在数据的表格表示中,例如列表列表或电子表格,每一列通常代表一个变量或特征,该列中的值代表单个观察值或测量值。

列乘积与列和或列平均值的概念密切相关,其中,而不是乘法;列中的值相加或取平均值以获得一个表示列累积效应或集中趋势的单个值。

计算列乘积时,将特定列中的值相乘以获得一个表示该列中变量或观察值的综合效应的单个值。这在各种数据分析和建模场景中非常有用,例如计算不同产品的销售数量的总乘积或计算数学模型中变量的乘积。

为了在 Python 中的列表列表中计算列乘积,我们可以使用不同的方法。让我们详细了解每种方法及其示例。

使用循环

如果我们有一个列表列表,其中每个子列表代表一个记录,子列表中的元素代表不同列中的值,我们可以使用循环迭代列并计算每列的乘积。

示例

在这个示例中,我们初始化一个空列表`column_product`来存储每列的乘积。然后,我们使用循环变量`i`迭代每个子列表中元素的索引。对于每一列,我们使用生成器表达式`(record[i] for record in records)`提取该列的值,并使用带有 lambda 函数的`functools.reduce()`计算列值的乘积。然后将乘积追加到`column_product`列表中。

import functools
records = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]
column_product = []
num_records = len(records)
for i in range(len(records[0])):
   column_product.append(functools.reduce(lambda x, y: x * y, (record[i] for
   record in records)))
print("The column product of list of lists:",column_product)

输出

The column product of list of lists: [28, 80, 162]

使用 zip() 和列表推导式

我们可以利用 zip() 函数转置列表列表,将每列的值组合在一起。然后,我们可以使用列表推导式计算每列的乘积。

示例

在此示例中,zip(*records)转置列表列表,创建一个迭代器,返回包含每列元素的元组。然后,列表推导式使用functools.reduce()lambda函数计算每列的乘积,从而生成列乘积列表。

import functools
records = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]
column_product = [functools.reduce(lambda x, y: x * y, column) for column in
zip(*records)]
print("The column product of list of lists:",column_product)

输出

The column product of list of lists: [28, 80, 162]

使用 NumPy

NumPy是 Python 中用于数值计算的最强大的库之一。它提供了一种高效且简洁的方法来计算列表列表中的列乘积。我们在 numpy 中有一个名为product()的函数,它有助于计算列乘积。

示例

在这个示例中,我们使用np.array(records)将列表列表转换为 NumPy 数组,其中每个子列表代表数组中的一行。然后,我们使用np.product(arr, axis=0)沿第一个轴(即行)计算乘积,有效地为我们提供了列乘积。

import numpy as np
records = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]
arr = np.array(records)
column_product = np.product(arr, axis=0)
print("The column product of list of lists:",column_product)

输出

The column product of list of lists: [ 28 80 162]

更新于: 2024年1月2日

87 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.