繁体   English   中英

Python - 将 function 应用于二维数组

[英]Python - Applying function to 2D array

我有一个从 CSV 电子表格转换而来的二维数组,其中包含使用 pandas 的数据。我想对还包含数组元素的数据应用 function。

我的function:

def calc_pol(a, b, R = 0.08314462618, T = 298.15):
           return a * b * R * T

我可以按以下方式在数据数组上调用它,其中 a 和 b 由数据数组确定:

calc_pol(
        a = data[0,0], b=data[0,1]
        )

这将返回我正在寻找的值。 现在,电子表格的组织是在列中,所以数据合并的方式是,如果我:

print(data[0])

我得到以下(任意)值:

20 40 60 80 100 120

我想提供我的 function 20*40 (data[0,0]| * data[0,1]) --> 在新数组中保存值。 60 * 80 (data[0,2]| * data[0,3]) --> 在新数组中保存值并对 80 * 100 执行相同操作。

每个“列”都有 80 个值,所以我想通过使用 for 循环或其他一些 function 在 0: 80 范围内迭代 i 但我不确定如何继续,我的索引一直“超出范围。我感谢您提供的任何见解!

您所描述的听起来像是 pandas 中的简单列操作,如果您有列名,则无需使用数字索引或 for 循环:

import pandas as pd

df = pd.DataFrame({'c'+str(i):[i]*4 for i in range(6)})

def calc_pol(df, col1, col2, R = 0.08314462618, T = 298.15):
    return df[col1] * df[col2] * R * T

df['c6'] = calc_pol(df, 'c1', 'c2', R = 0.08314462618, T = 298.15)
df['c7'] = calc_pol(df, 'c3', 'c4', R = 0.08314462618, T = 298.15)
    c0  c1  c2  c3  c4  c5  c6          c7
0   0   1   2   3   4   5   49.579141   297.474844
1   0   1   2   3   4   5   49.579141   297.474844
2   0   1   2   3   4   5   49.579141   297.474844
3   0   1   2   3   4   5   49.579141   297.474844

您可以使用列表理解并将所有结果存储在res列表中:

number_of_rows = 80
res = [calc_pol(a = data[0,i], b=data[0,i+1]) for i in range(number_of_rows - 1)]

此时res[0]包含20*40res[1]包含60 * 80等等......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM