Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: numpy.insert NaN value

I'm trying to insert NaN values to specific indices of a numpy array. I keep getting this error:

TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'

When trying to do so with the following code.

x = np.array(range(1,11))
x = np.insert(x, 5, np.nan, axis=0)

However, I can append NaN values to the end of the array with no problem.

x = np.array(range(1,11))
x = np.append(x, np.nan)

Why is this and how can I insert NaN values in my array?

like image 556
natsuki_2002 Avatar asked Nov 28 '13 11:11

natsuki_2002


1 Answers

With x=np.array(range(1,11)), the dtype by default is int64, which prevents you to insert a float.

The easiest is to force the dtype to float directly:

x = np.array(range(1, 11), dtype=float)

With np.insert, you're limited to the dtype of the initial array (the temporary arrays created below the hood use the dtype of the input).

With np.append, however, you're actually using np.concatenate, which creates an array with the "largest" dtype of its inputs: in your example, x is then cast to float.


Note that you could simply use the np.arange function:

x = np.arange(1, 11, dtype=float)
like image 164
Pierre GM Avatar answered Oct 02 '22 17:10

Pierre GM