2009-11-18 18 views
5

मैं एक NumPy सरणी में एक डेटा स्ट्रिंग लिखना चाहता हूँ। स्यूडोकोड:एक NumPy वर्ण सरणी में एक डेटा स्ट्रिंग लिखें?

d = numpy.zeros(10, dtype = numpy.character) 
d[1:6] = 'hello' 

उदाहरण परिणाम:

d= 
    array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''], 
     dtype='|S1') 

यह कैसे सबसे स्वाभाविक रूप से और कुशलता से NumPy के साथ किया जा सकता है?

मुझे for लूप, जनरेटर या कुछ भी पुनरावृत्ति नहीं चाहिए। क्या यह एक कमांड के साथ छद्म कोड के साथ किया जा सकता है?

उत्तर

3

बस स्पष्ट रूप से बनाने के अपने पाठ एक list (बजाय यह अजगर से iterable है कि) और NumPy यह स्वचालित रूप से समझ जाएगा:

>>> text = 'hello' 
>>> offset = 1 
>>> d[offset:offset+len(text)] = list(text) 
>>> d 

array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''], 
     dtype='|S1') 
+0

बदसूरत और जगह में नहीं, लेकिन काम करता है। धन्यवाद। – user213060

+2

मैंने विशाल तारों के लिए मेमोरी ओवरहेड से बचने के लिए एक इटर का उपयोग करने का प्रयास किया। आपको विश्वास नहीं होगा कि क्या numpy किया --- डी [1: 6] = iter ('हैलो') – user213060

+0

ओएमजी, यही कारण है कि मैंने आपको पहली जगह में एक सूची का उपयोग करने के लिए कहा ... – Paul

2

थोड़ा एक सूची बनाने के लिए आप numpy.fromstring और numpy है जब जरूरत नहीं है .fromiter।

+0

मैं कई तार लिख रहा हूँ एक ही सरणी पर अलग-अलग पदों। – user213060

1

आप पाइथन के array प्रकार का प्रयास कर सकते हैं। यह list के रूप में उच्च ओवरहेड नहीं होगा।

from array import array as pyarray 
d[1:6] = pyarray('c', 'hello') 
संबंधित मुद्दे