6

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?

1 Answer 1

8

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)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.