亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將自定義 C 函數與 Pandas 一起使用(一種簡單的方法)

將自定義 C 函數與 Pandas 一起使用(一種簡單的方法)

繁花不似錦 2023-10-06 11:11:09
有沒有辦法讓自定義 C 函數作用于 pandas DF?例如,我知道我可以將 ac 函數包裝在 python 函數中,并在行明智迭代中使用它,但這似乎效率低下。我知道pandas是用c寫的。我想要一種簡單的方法來告訴 pandas“使用這個 c 函數”。這很天真,但是這樣的事情...cFunc = get_c_function_some_how()for i in range(1000):    df = df.use_c_function(cFunc)use_df(df)...我的用例是,我一遍又一遍地進行一組簡單但計算成本較高的計算,并且我希望使該特定計算集顯著更快編輯:我想以某種方式將整個 Pandas Dataframe 傳遞給 C 函數就可以了,實際上迭代可能應該在 C 內部發生,所以如果需要使用一次 python 包裝的 c 函數,那么數據就被移交給C 用于計算,這似乎是一個非常好的解決方案。我個人找不到有關執行此類操作的文檔。
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

有一種方法可以做到這一點,但我不會將其描述為“簡單”。

在內部,Pandas 使用 numpy 來存儲數據。如果您可以獲得 numpy 向量形式的數據,則可以將其傳遞給 C,并讓它對該向量進行操作。

從列中獲取 numpy 向量很容易:

vec?=?df["foo"].to_numpy()

接下來,您需要確保向量是連續的。你不能假設它是這樣,因為如果數據具有兼容的類型,pandas 會將來自多個列的數據存儲在同一個 numpy 數組中。

vec?=?np.ascontiguousarray(vec)

然后,您可以將 numpy 數組傳遞給 C。

查看完整回答
反對 回復 2023-10-06
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號