Yanıtlar:
astype
Yö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?
nan
ve inf
kayan 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 nan
ve inf
belirli 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]])
astype
genellikle ç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.99999
ints mi 8
olduğ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 asarray
ile kullanabilirsiniz :dtype=int
astype
>>> 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.inf
veyanp.nan
dizinizde olmadığından emin olun . Örneğin,np.array([np.inf]).astype(int)
çıktılararray([-9223372036854775808])
.