NumPy

2015-12-16 11 views
6

में Astype के लिए मान्य पैरामीटर मैं न्यूपी और SciPy के लिए नया हूँ। मैटलैब के विपरीत, ऐसा लगता है कि NumPy में प्रत्येक सरणी से जुड़े डेटा प्रकार हैं।NumPy

मान लीजिए कि हम एक पूर्णांक सरणी x है:

import numpy as np 
x = np.array([1, 2, 3]) 

अगर मैं नाव में सरणी परिवर्तित करना चाहते हैं, तो यह निम्न काम करता है की तरह लगता है:

y1 = x.astype('float64') # Works! 
y2 = x.astype('float_') # Works! 
y3 = x.astype('float') # Works! 

लेकिन मैं कुछ हद तक कर रहा हूँ निम्नलिखित को देखने के लिए परेशान भी एक उद्धरण चिह्नों के बिना काम करता है।

y4 = x.astype(float)  # Still works!! 

लेकिन दूसरी y1 और y2 के लिए इस्तेमाल किया भाव के लिए, अगर मैं एकल उद्धरण चिह्न छोड़ देते हैं, यह काम नहीं करता:

y5 = x.astype(float64) # Doesn't work. 
y6 = x.astype(float_) # Doesn't work. 

तो, मैं कुछ हद तक क्यों Y4 काम करता है के बारे में उलझन में हूँ, लेकिन y5 और y6 एक त्रुटि का कारण बनता है। क्या कोई मुझे इस पर प्रबुद्ध कर सकता है?

+0

मैंने मैटलैब का उपयोग नहीं किया है, लेकिन [दस्तावेज़ीकरण द्वारा निर्णय] (http://www.mathworks.com/help/matlab/numeric-types.html), ऐसा लगता है कि मैटलैब सरणी में भी प्रकार है। वे हमेशा डबल-परिशुद्धता फ्लोटिंग पॉइंट के लिए डिफ़ॉल्ट होते हैं। – user2357112

उत्तर

5

अन्य अभिव्यक्तियां काम करती हैं, आपको केवल numpy से प्रकार आयात करने की आवश्यकता है। आपको float के लिए ऐसा करने की आवश्यकता नहीं है क्योंकि यह पाइथन के लिए एक अंतर्निहित प्रकार है।

y5 = x.astype(np.float64) 
y6 = x.astype(np.float_) 

दोनों स्ट्रिंग प्रकार और प्रकार प्रकार आदानों आंतरिक रूप से एक numpy.dtype वस्तु में बदल रही हैं, जो कि तुम क्या देखते जब ndarray.dtype विशेषता का उपयोग।

1

astype के प्रलेखन पढ़ने:

dtype : str or dtype 
    Typecode or data-type to which the array is cast. 

जब आप उद्धरण के बिना float उपयोग कर रहे हैं, तो आप dtype उपयोग कर रहे हैं। जब आप "float" का उपयोग कर रहे हैं, तो आप str का उपयोग कर रहे हैं।

float64 और float_ पायथन में dtypes नहीं हैं। क्योंकि आपके कार्यक्षेत्र में नहीं है वहाँ,

2

इन 2 काम नहीं करते, उन नामों के साथ चर:

y5 = x.astype(float64) # Doesn't work. 
y6 = x.astype(float_) # Doesn't work. 

मैं एक NameError: name 'float64' is not defined मिलता है। x.astype विधि को कुछ भी पारित करने से पहले त्रुटि को पायथन दुभाषिया द्वारा उत्पादित किया जाता है।

यदि आप इंटरैक्टिव दुभाषिया में float64 टाइप करते हैं तो आपको वही त्रुटि मिल जाएगी।

np.float64 काम करता है क्योंकि np नामस्थान में ऐसा चर है। यह वास्तव में एक numpy वर्ग है।

float भी काम करता है। यह भी एक वर्ग है, आधार पायथन एक (इसे एक समारोह के रूप में भी इस्तेमाल किया जा सकता है, एक स्ट्रिंग या संख्या को एक फ्लोट ऑब्जेक्ट में परिवर्तित कर सकता है)।

'float64' एक स्ट्रिंग है, astype समझता है, शायद किसी तालिका में कुछ देखकर। (मैं इसे देख सकता था)।

अगर मैं astype कुछ यादृच्छिक स्ट्रिंग देना दूसरी ओर मुझे कोई दूसरी त्रुटि

In [967]: A.astype('bar') 
... 
TypeError: data type "bar" not understood 

np.dtype('bar') एक ही त्रुटि देता है मिलता है।

np.dtype(float) 
np.dtype('float64') 
np.dtype('float') 

सभी एक ही dtype('float64') ऑब्जेक्ट को वापस लौटाते हैं।

 संबंधित मुद्दे