簡體   English   中英

python 有效地將 function 應用於多個 arrays

[英]python efficiently applying function over multiple arrays

(python 的新手,如果這個問題很基礎,我深表歉意)

假設我創建了一個 function 來計算一些方程式

def plot_ev(accuracy,tranChance,numChoices,reward): 
     ev=(reward-numChoices)*1-np.power((1-accuracy),numChoices)*tranChance)
     return ev

accuracy、tranChance 和 numChoices 都是浮點數 arrays

e.g. 
accuracy=np.array([.6,.7,.8])
tranChance=np.array([.6,.7,8])
numChoices=np.array([2,.3,4])

我將如何在我的 3 arrays 上運行和 plot plot_ev 以便我最終得到一個具有所有元素組合的 output(理想情況下不運行 3 forloops)

理想情況下,我會有一個 plot 顯示所有組合的 output(第一個元素來自 accuracy,所有元素來自 transChance 和 numChoices,第二個元素來自 accuracy,所有元素來自 transChance 和 numChoices 等等)

提前致謝!

使用numpy.meshgrid制作三個變量值的所有組合的數組

products = np.array(np.meshgrid(accuracy, tranChance, numChoices)).T.reshape(-1, 3)

然后再次轉置它並提取三個更長的 arrays 以及每個組合中三個變量的值:

accuracy_, tranChance_, numChoices_ = products.T

您的 function 僅包含可以在 numpy arrays 上執行的操作,因此您可以簡單地將這些 arrays 作為參數輸入 function:

reward = ??  # you need to set the reward value
results = plot_ev(accuracy_, tranChance_, numChoices_, reward)

或者考慮使用 pandas dataframe,這將提供更清晰的列標簽。

import pandas as pd
df = pd.DataFrame(products, columns=["accuracy", "tranChance", "numChoices"])
df["ev"] = plot_ev(df["accuracy"], df["tranChance"], df["numChoices"], reward)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM