Yanıtlar:
astypeYöntemi kullanın .
>>> 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)ve np.array([np.nan]).astype(int)hepsi aynı şeyi dönün. Neden?
nanve infkayan nokta değerleridir ve anlamlı olarak int değerine dönüştürülemez. Sizinkinden önceki yorumun belirttiği gibi, şaşırtıcı bir davranış olacaktır ve kesin davranışın iyi tanımlandığını düşünmüyorum. Eşlemek nanve infbelirli değerlerle eşleştirmek istiyorsanız , bunu kendiniz yapmanız gerekir.
int. Öyle numpy.int32.
: Yuvarlama nasıl kontrol için bazı numpy fonksiyonlar Rint , zemin , trunc , hücrelerinin, . nasıl yüzer, yukarı, aşağı veya en yakın int yuvarlamak istediğiniz bağlı.
>>> 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.]])
Bunlardan birini int'e veya diğer türlerden birini numpy, astype yapmak için (BrenBern tarafından cevaplandığı gibi):
a.astype(int)
array([[1, 2],
[1, 3]])
>>> y.astype(int)
array([[1, 2],
[1, 2]])
astypegenellikle çok geneldir ve bence intx - inty dönüşümleri yaparken daha yararlı olur. Ben float - int dönüşüm yapmak istediğim zaman yuvarlama türünü seçebilmek güzel bir özellik.
7.99999ints mi 8olduğunu np.rint(arr).astype(int)?
astype(np.uint8)
şunları kullanabilirsiniz 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]])
Girişinizin bir Numpy dizisi olacağından emin değilseniz, aşağıdakiler yerine asarrayile kullanabilirsiniz :dtype=intastype
>>> np.asarray([1,2,3,4], dtype=int)
array([1, 2, 3, 4])
Girdi dizisi zaten doğru dtype'e sahip değilse asarray, dizinin kopyalanmasını önler astype(belirtmedikçe 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.infveyanp.nandizinizde olmadığından emin olun . Örneğin,np.array([np.inf]).astype(int)çıktılararray([-9223372036854775808]).