假设我有一个数据集(这是来自财政部网站的每日财政收益率的减少版本)。我在那里人为地创造了一些零来说明我的问题。每行对应一个给定的日期。
问题 - 假设我想在每一行中进行对数或二次外推/插值。有没有快速的方法来做或者必须遍历每一行来填充它?
x = np.array([[ 1.31, 1.44, 0, 2.51, 0, 0],
[ 0, 1.45, 1.63, 2.48, 0, 2.69],
[ 1.31, 1.43, 1.59, 2.48, 2.55, 2.71]])
答案 0 :(得分:1)
这是使用均值插值的基本方法。当然,您可以应用更正式的计算,但这是一个开始
import numpy as np
# Interpolate using the mean of each row
# Your original data
x = np.array([[ 1.31, 1.44, 0, 2.51, 0, 0],
[ 0, 1.45, 1.63, 2.48, 0, 2.69],
[ 1.31, 1.43, 1.59, 2.48, 2.55, 2.71]])
print(x)
print()
# for each row in x, set the zero values to the mean of the non zero values
for row in x:
row[row == 0] = np.mean(row[np.nonzero(row)])
print(x)
以下输出:
[[ 1.31 1.44 0. 2.51 0. 0. ]
[ 0. 1.45 1.63 2.48 0. 2.69]
[ 1.31 1.43 1.59 2.48 2.55 2.71]]
[[ 1.31 1.44 1.75333333 2.51 1.75333333 1.75333333]
[ 2.0625 1.45 1.63 2.48 2.0625 2.69 ]
[ 1.31 1.43 1.59 2.48 2.55 2.71 ]]