Python: numpy.insert NaN value

arrays, numpy, python

Solution

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)

Problem

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?

Original source