Jawaban:
Gunakan astypemetodenya.
>>> 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), dan np.array([np.nan]).astype(int)semua kembali hal yang sama. Mengapa?
nandan infmerupakan nilai floating-point dan tidak dapat dikonversi secara berarti ke int. Seperti komentar sebelum catatan Anda, akan ada perilaku yang mengejutkan, dan saya tidak berpikir perilaku yang tepat didefinisikan dengan baik. Jika Anda ingin memetakan nandan infnilai-nilai tertentu, Anda perlu melakukannya sendiri.
int. Ini numpy.int32.
Beberapa fungsi numpy untuk bagaimana mengontrol pembulatan: etak , lantai , trunc , ceil . tergantung bagaimana Anda ingin mengitari pelampung, atas, bawah, atau ke int terdekat.
>>> 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.]])
Untuk membuat salah satu dari ini ke int, atau salah satu dari tipe lain di numpy, astype (seperti dijawab oleh BrenBern):
a.astype(int)
array([[1, 2],
[1, 3]])
>>> y.astype(int)
array([[1, 2],
[1, 2]])
astypesering terlalu umum, dan saya pikir itu mungkin lebih bermanfaat ketika melakukan konversi intx - inty. Ketika saya ingin melakukan konversi float - int dapat memilih jenis pembulatan adalah fitur yang bagus.
7.99999ke int 8, seperti np.rint(arr).astype(int)?
astype(np.uint8)
Anda bisa menggunakan 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]])
Jika Anda tidak yakin masukan Anda akan menjadi array Numpy, Anda dapat menggunakan asarraydengan dtype=intbukannya astype:
>>> np.asarray([1,2,3,4], dtype=int)
array([1, 2, 3, 4])
Jika array input sudah memiliki dtype yang benar, asarrayhindari salinan array sementara astypetidak (kecuali Anda tentukan 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.infataunp.nandalam susunan Anda, karena hasilnya mengejutkan. Misalnya,np.array([np.inf]).astype(int)keluaranarray([-9223372036854775808]).