我的二维数据包含错误值(0表示错误)。我的目标是将每个不正确的值替换为最近的不坏的邻居。
SciPyNearestNDInterpolator
似乎是实现此目的的好方法。在二维情况下,它接受(点数)x 2的索引数组和(点数)x 1的对应值数组作为插值对象。
因此,我需要获取索引和值的子集:那些是“好”的索引和值。下面的代码实现了这一点,但coordinates = array(list(ndindex(n_y, n_x)))
和where(values != 0)[0]
都凌乱。有没有更清洁的方法可以做到这一点?
# n_y and n_x are the number of points along each dimension.
coordinates = array(list(ndindex(n_y, n_x)))
values = data.flatten()
nonzero_ind = where(values != 0)[0]
nonzero_coordinates = coordinates[nonzero_ind, :]
nonzero_values = values[nonzero_ind]
谢谢。
nonzero_coordinates = np.argwhere(data != 0)
nonzero_values = np.extract(data, data)
或简单地:
nonzero_values = data[data!=0]
我最初宁愿错过这种明显的nonzero_values
方法,但要感谢@askewchan的意见。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句