我最近开始使用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