NumPy issues warnings when it automatically casts data types from float to integer, which can lead to data loss. This warning is intended to alert users of the non-intuitive and possibly unintended data type changes. See how to address these warnings and ensure that your data types are correct for your application needs.
Understanding the Warning
Here is a common scenario where you might encounter this warning:
import numpy as np
np.array([1.7, 1.3, 1.9], dtype=np.int)
This code tries to create an integer array from a list of floats, which will trigger a warning because the decimal parts are truncated.
Strategies to Fix or Avoid the Warning
Explicit Conversion
If truncation is acceptable, explicitly convert floats to integers using methods that clearly define the behavior:
np.array([1.7, 1.3, 1.9], dtype=np.int).astype(np.int)
or
np.floor([1.7, 1.3, 1.9]).astype(np.int)
Using Correct Data Types
If your data should remain floats, ensure that you specify or maintain float data types:
np.array([1.7, 1.3, 1.9], dtype=np.float)
Suppressing the Warning
If you understand the implications and decide that the warning is not helpful, you can suppress it:
import warnings
with warnings.catch_warnings():
warnings.simplefilter("ignore")
np.array([1.7, 1.3, 1.9], dtype=np.int)