के numpy recarray तारों को एक तारकीय पुनरावृत्ति शुरू करना संभव है जो पहले तारों की लंबाई को जानने के बिना तारों को पकड़ लेगा?परिवर्तनीय लंबाई
एक (काल्पनिक) उदाहरण के रूप में:
mydf = np.empty((numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ])
समस्या यह है कि मैं जानकारी के साथ यह आबाद करने का पहले से मेरी recarray निर्माण कर रहा हूँ है, और मैं जरूरी अग्रिम में file_name
की अधिकतम लंबाई पता नहीं है ।
मेरे सभी प्रयास स्ट्रिंग क्षेत्र में परिणाम छोटा कर दिया जा रहा है:
>>> mydf = np.empty((2,), dtype=[('file_name',str),('file_size_mb',float)])
>>> mydf['file_name'][0]='foobarasdf.tif'
>>> mydf['file_name'][1]='arghtidlsarbda.jpg'
>>> mydf
array([('', 6.9164002347457e-310), ('', 9.9413127e-317)],
dtype=[('file_name', 'S'), ('file_size_mb', '<f8')])
>>> mydf['file_name']
array(['f', 'a'],
dtype='|S1')
(एक अलग रूप में, के रूप में क्यों mydf['file_name']
शो 'एफ' और 'एक' जबकि mydf
शो '' और '' करता है?)
इसी तरह, अगर मैं के लिए प्रकार (माना) |S10
साथ आरंभ file_name
तो बातें लंबाई 10
केवल समान प्रश्न मैं मिल सकता है this one है, लेकिन इस calcu में काट उपयुक्त स्ट्रिंग लम्बाई एक प्राथमिक लेटती है और इसलिए मेरा उतना ही नहीं है (जैसा कि मुझे पहले से कुछ भी पता नहीं है)।
क्या file_name
(उदाहरण के लिए) |S9999999999999
(यानी कुछ हास्यास्पद ऊपरी सीमा) के साथ कोई अन्य विकल्प है?
यह एक अच्छा सवाल है। रिकॉर्ड्स में लंबाई 0 स्ट्रिंग्स ने मुझे अपने बालों को आधे घंटे तक फाड़ दिया था! – Christoph