我有
import numpy as np
a = np.array([np.nan,2,3])
b = np.array([1,np.nan,2])
我想将函数应用于a,b,是否有一种快速的方法可以做到这一点。 (就像在Pandas,我们可以申请)
具体来说,我对a和b的平均值很感兴趣,但是当另一个数字丢失时,将平均值作为其中一个数字。
即。我想回来
np.array([1,2,2.5])
以上例子。但是,我想在更一般的设置中知道答案(我想在一些numpy数组中应用一个操作元素)
答案 0 :(得分:1)
您可以使用numpy.nanmean
,忽略NaN
s:
np.nanmean([a, b], axis=0)
# array([ 1. , 2. , 2.5])
答案 1 :(得分:1)
如果你想通过NumPy数组迭代一些自定义函数,效率为NumPy universal functions (ufunc),那么选择
以下是后者的示例,其中函数为exp(x) + log(y)
(因为NumPy的ufuncs exp
和log
已经可用,这仅用于演示):
import numpy as np
import sympy as sym
from sympy.utilities.autowrap import ufuncify
x, y = sym.symbols('x y')
f = ufuncify([x, y], sym.exp(x) + sym.log(y))
现在应用f(np.array([1, 2, 3]), np.array([4, 5, 6]))
将返回NumPy数组[4.10457619, 8.99849401, 21.87729639]
,其方式不是Python循环,而是调用(默认情况下)编译的Fortran代码。
(但在实践中,你可能会发现NumPy已经有一些ufunc可以做你想要的,如果以正确的方式组合。)