Câu trả lời:
Sử dụng astypephương pháp.
>>> x = np.array([[1.0, 2.3], [1.3, 2.9]])
>>> x
array([[ 1. , 2.3],
[ 1.3, 2.9]])
>>> x.astype(int)
array([[1, 2],
[1, 2]])
np.array([np.inf]).astype(int), np.array([-np.inf]).astype(int), và np.array([np.nan]).astype(int)tất cả trở lại điều tương tự. Tại sao?
nanvà inflà các giá trị dấu phẩy động và không thể được chuyển đổi thành int. Như nhận xét trước ghi chú của bạn, sẽ có hành vi đáng ngạc nhiên và tôi không nghĩ hành vi chính xác được xác định rõ. Nếu bạn muốn lập bản đồ nanvà infcác giá trị nhất định, bạn cần phải tự làm điều đó.
int. Đó là numpy.int32.
Một số chức năng numpy cho cách kiểm soát làm tròn: rint , sàn , trunc , trần . tùy thuộc vào cách bạn muốn làm tròn số phao, lên, xuống hoặc đến int gần nhất.
>>> x = np.array([[1.0,2.3],[1.3,2.9]])
>>> x
array([[ 1. , 2.3],
[ 1.3, 2.9]])
>>> y = np.trunc(x)
>>> y
array([[ 1., 2.],
[ 1., 2.]])
>>> z = np.ceil(x)
>>> z
array([[ 1., 3.],
[ 2., 3.]])
>>> t = np.floor(x)
>>> t
array([[ 1., 2.],
[ 1., 2.]])
>>> a = np.rint(x)
>>> a
array([[ 1., 2.],
[ 1., 3.]])
Để thực hiện một trong những điều này thành int hoặc một trong các loại khác trong numpy, astype (như được trả lời bởi BrenBern):
a.astype(int)
array([[1, 2],
[1, 3]])
>>> y.astype(int)
array([[1, 2],
[1, 2]])
astypethường quá chung chung và tôi nghĩ có lẽ hữu ích hơn khi thực hiện chuyển đổi intx - inty. Khi tôi muốn thực hiện float - chuyển đổi int có thể chọn loại làm tròn là một tính năng hay.
7.99999thành int như thế nào 8, là np.rint(arr).astype(int)?
astype(np.uint8)
bạn có thể sử dụng np.int_:
>>> x = np.array([[1.0, 2.3], [1.3, 2.9]])
>>> x
array([[ 1. , 2.3],
[ 1.3, 2.9]])
>>> np.int_(x)
array([[1, 2],
[1, 2]])
Nếu bạn không chắc chắn đầu vào của bạn sẽ là một mảng NumPy, bạn có thể sử dụng asarrayvới dtype=intthay vì astype:
>>> np.asarray([1,2,3,4], dtype=int)
array([1, 2, 3, 4])
Nếu mảng đầu vào đã có dtype chính xác, asarraysẽ tránh việc sao chép mảng trong khi astypekhông (trừ khi bạn chỉ định copy=False):
>>> a = np.array([1,2,3,4])
>>> a is np.asarray(a) # no copy :)
True
>>> a is a.astype(int) # copy :(
False
>>> a is a.astype(int, copy=False) # no copy :)
True
np.infhoặcnp.nantrong mảng của bạn, vì chúng có kết quả đáng ngạc nhiên. Ví dụ,np.array([np.inf]).astype(int)đầu raarray([-9223372036854775808]).