我试图从X-Y数据点的Python 3.10 NumPy数组中删除所有NaN
值条目,然后通过polyfit
NumPy函数创建多项式拟合数据。实际的NaN
值位于Y轴上,但我想删除NaN
的每个Y示例的X和Y值。
following attempt:
import numpy as np
def main():
dataX = [1, 2, 3, 4, 5]
dataY = [1, np.nan, 5, np.nan, 1]
finiteIdx = np.isfinite(dataX) & np.isfinite(dataY)
poly = np.polyfit(dataX[finiteIdx], dataY[finiteIdx], 2)
if (__name__ == "__main__"):
main()
结果:
poly = np.polyfit(dataX[finiteIdx], dataY[finiteIdx], 2)
TypeError: only integer scalar arrays can be converted to a scalar index
import numpy as np
def main():
dataX = [1, 2, 3, 4, 5]
dataY = [1, np.nan, 5, np.nan, 1]
poly = np.polyfit(dataX[~np.isnan(dataY)], dataY[~np.isnan(dataY)], 2)
if (__name__ == "__main__"):
main()
结果:
poly = np.polyfit(dataX[~np.isnan(dataY)], dataY[~np.isnan(dataY)], 2)
TypeError: only integer scalar arrays can be converted to a scalar index
import numpy as np
def main():
dataX = [1, 2, 3, 4, 5]
dataY = [1, np.nan, 5, np.nan, 1]
poly = np.polyfit(dataX[dataY != np.nan], dataY[dataY != np.nan], 2)
if (__name__ == "__main__"):
main()
结果:
raise TypeError("expected 1D vector for x")
TypeError: expected 1D vector for x
从NumPy数组中删除所有NaN
值的正确方法是什么?
感谢您阅读我的文章,任何指导都很感激。
2条答案
按热度按时间mlnl4t2r1#
关于你的第一次尝试,你只需要将
dataX
和dataY
转换为numpyndarray
,然后代码就可以工作了。错误消息具有误导性,您可以在此question中获得更多信息。
ehxuflar2#
您可以将dataX,dataY组合成一个2D数组,并删除具有NaN的列或行(然后根据需要使用数组元素)。但是如果你想让他们分开,那么这可能会有所帮助:
给予