जवाबों:
astype
विधि का प्रयोग करें ।
>>> 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)
, और np.array([np.nan]).astype(int)
सभी एक ही बात लौटने। क्यों?
nan
और inf
फ्लोटिंग-पॉइंट वैल्यू हैं और इसे सार्थक रूप से इंट में परिवर्तित नहीं किया जा सकता है। जैसा कि आपके नोट्स से पहले टिप्पणी है, आश्चर्यजनक व्यवहार होगा, और मुझे नहीं लगता कि सटीक व्यवहार अच्छी तरह से परिभाषित है। यदि आप मानचित्र बनाना चाहते हैं nan
और inf
कुछ मूल्यों के लिए, तो आपको स्वयं ऐसा करने की आवश्यकता है।
int
। यह है numpy.int32
।
: कैसे गोलाई को नियंत्रित करने के लिए कुछ numpy कार्यों प्रिंट करें , फर्श , TRUNC , प्लस्तर लगाना । निर्भर करता है कि आप कैसे फ़्लोट को गोल करना चाहते हैं, ऊपर, नीचे, या निकटतम इंट को।
>>> 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.]])
इंट में या अन्य प्रकारों में से किसी एक को सुस्पष्ट करने के लिए, astype (जैसा कि ब्रेनबर्न द्वारा उत्तर दिया गया है):
a.astype(int)
array([[1, 2],
[1, 3]])
>>> y.astype(int)
array([[1, 2],
[1, 2]])
astype
अक्सर बहुत सामान्य है, और मुझे लगता है कि यह संभव है जब intx - inty रूपांतरण कर रही है। जब मैं फ्लोट करना चाहता हूं - इस तरह की गोलाई चुनने में सक्षम होने के लिए अंतर रूपांतरण एक अच्छी सुविधा है।
7.99999
ints चाहते 8
, है np.rint(arr).astype(int)
?
astype(np.uint8)
आप उपयोग कर सकते हैं 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]])
आप नहीं कर रहे हैं सुनिश्चित करें कि आपके इनपुट एक Numpy सरणी होने जा रहा है, तो आप उपयोग कर सकते हैं asarray
के साथ dtype=int
के बजाय astype
:
>>> np.asarray([1,2,3,4], dtype=int)
array([1, 2, 3, 4])
यदि इनपुट सरणी में पहले से ही सही dtype है, asarray
तो सरणी कॉपी से बचता है जबकि astype
ऐसा नहीं होता (जब तक आप निर्दिष्ट नहीं करते 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
याnp.nan
आपके सरणी में नहीं है , क्योंकि उनके पास आश्चर्यजनक परिणाम हैं। उदाहरण के लिए,np.array([np.inf]).astype(int)
आउटपुटarray([-9223372036854775808])
।