0

The code

a = 100. * np.random.randn(200)                                                                        
a = a.astype(int)  

recasts a as an array of integer numbers. Meanwhile, the code

a = 100. * np.random.randn(200)                                                                        
a[:] = a.astype(int) 

recasts a as an array of integer floats obtained by truncating the original values of a. Why doesn't the second case also give integers?

I'm currently using Python 3.8 and NumPy 1.23.

JustLearning
  • 1,435
  • 1
  • 1
  • 9

1 Answers1

3

To clarify, a.astype(int) return a new array with dtype('int32').

  • Line a = a.astype(int) alters array a with the new array return by astype(int).

  • Meanwhile, a[:] = a.astype(int) only update the values of the a array, not the dtype.

trgiangdo
  • 76
  • 2