簡體   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