Python 函数忽略nan值并执行numpy.polyval
我试图编写一个函数,在其中为它提供一个mxn数组,它的目标是迭代数组并为每个值执行numpy.polyval。数组将包含一些nan值,因此我希望函数以与原始数组相同的顺序返回nan值。 以下是我目前的功能:Python 函数忽略nan值并执行numpy.polyval,python,python-2.7,numpy,iteration,nan,Python,Python 2.7,Numpy,Iteration,Nan,我试图编写一个函数,在其中为它提供一个mxn数组,它的目标是迭代数组并为每个值执行numpy.polyval。数组将包含一些nan值,因此我希望函数以与原始数组相同的顺序返回nan值。 以下是我目前的功能: def polyval_NaN(p,data): m,n = data.shape data2 = data for i in np.arange(1,m): for j in np.arange(1,n): if np.isn
def polyval_NaN(p,data):
m,n = data.shape
data2 = data
for i in np.arange(1,m):
for j in np.arange(1,n):
if np.isnan(data2[i,j]) == False:
data2[i,j] = np.polyval(p,data[i,j])
return data2
感谢您的帮助像这样使用布尔索引:
>>> import numpy as np
>>>
>>> p = np.array((4,5,3))
>>> a = np.arange(12.).reshape(3,4)
>>> a.ravel()[[2,5,7]] = np.nan
>>> a
array([[ 0., 1., nan, 3.],
[ 4., nan, 6., nan],
[ 8., 9., 10., 11.]])
>>>
>>> result = np.full_like(a, np.nan)
>>> good = ~np.isnan(a)
>>> result[good] = np.polyval(p, a[good])
>>>
>>> result
array([[ 3., 12., nan, 54.],
[ 87., nan, 177., nan],
[299., 372., 453., 542.]])
我将如何将其纳入我的函数中,我正在尝试对其进行概括,而不仅仅是做一个特定的操作case@Heavens93来吧,你可以自己解决。从字面上讲,它只需选择一个名称、缩进和添加一个return语句,这不适用于度为1的polyval=1@Heavens93尝试
p=[1]
。