我最近開始使用NumPy(到目前爲止它非常有用 - 爲什麼我不能儘早開始使用它),但仍然有一些我確信我是做錯了:NumPy矢量化函數
如何將函數應用於矢量(ndarray)?我希望它是矢量化的,它是一個比乘法更復雜的函數。我試過使用
np.where
,但這似乎是一個醜陋的解決方案(我不確定它的向量化)。有沒有一個類似於map的函數,這樣我的函數將被矢量化?假設我有一個二維數組 - 只是一個二維位置向量的數組,並且假設我想要找到每個向量的範數,並且如果它超過了某個值,請做任何事情。
np.where
似乎是一個很好的解決方案,但它不會工作,除非我轉置陣列:np.where(sum(a.T**2) > 10, a * 2, 0)
(只是一個任意的例子)。這看起來很冗長,而且轉置沒有多大意義。最後,如果我有一個三維數組 - 一個2維位置向量的二維數組(這樣在位置[1,2]將是向量(1,2))。我如何迭代所有的矢量(使用矢量化函數,如np.where)?我一直在使用np.reshape
,但如果可能的話,我想保持陣列的形狀相同。
我要將這些問題一起,因爲他們似乎相似,但如果我需要把它們分割成單獨的線程,請讓我知道,我會這麼做。
雖然有*是*的方式做你所描述的事情,你可能會檢查出['pandas'](http://pandas.pydata.org/),它可以處理許多這些操作。 –
你的第一個問題是什麼意思?顯然,你可以將多個算術和其他算子連接在一起來構建一個更大的函數。否則,如果你想要矢量化你的函數,你需要放入C或者Fortran(或者Cython),因爲numpy沒有辦法繞過每個元素的函數調用。 –
但是,我不能說,例如,從每個元素創建一個新的numpy數組總和呢? (只是一個例子,我不會只是總結它)。 – James