[英]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*40
, res[1]
包含60 * 80
等等......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.