[英]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.