I'm attempting to remove all NaN
value entry from a Python 3.10 NumPy array of X-Y data points, prior to creating a polynomial fit via the polyfit
NumPy function off of the data. The actual NaN
values are located on the Y-axis, but I would like to remove both the X and Y values for each Y instance that's a NaN
.
The 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()
Results in:
poly = np.polyfit(dataX[finiteIdx], dataY[finiteIdx], 2)
TypeError: only integer scalar arrays can be converted to a scalar index
The following attempt:
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()
Results in:
poly = np.polyfit(dataX[~np.isnan(dataY)], dataY[~np.isnan(dataY)], 2)
TypeError: only integer scalar arrays can be converted to a scalar index
The following attempt:
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()
Results in:
raise TypeError("expected 1D vector for x")
TypeError: expected 1D vector for x
What is the proper way of removing all NaN
values from a NumPy array?
Thanks for reading my post, any guidance is appreciated.