2015-01-29 15 views
6

मेरे पास mystr = "100110" की तरह एक स्ट्रिंग है (असली आकार बहुत बड़ा है) मैं इसे mynumpy = [1, 0, 0, 1, 1, 0], mynumpy.shape = (6,0) जैसे numpy array में कनवर्ट करना चाहता हूं, मुझे पता है कि numpy में np.fromstring(mystr, dtype=int, sep='') है, फिर भी समस्या यह है कि मैं अपनी स्ट्रिंग को विभाजित नहीं कर सकता इसके प्रत्येक अंक के लिए, इसलिए numpy इसे एक संख्या के रूप में लेता है। कोई विचार है कि मेरी स्ट्रिंग को numpy array में कैसे परिवर्तित करें?स्ट्रिंग को numpy array में कनवर्ट करें

उत्तर

16

list ऐसा करने में आपकी सहायता कर सकता है।

import numpy as np 

mystr = "100110" 
print np.array(list(mystr)) 
# ['1' '0' '0' '1' '1' '0'] 

आप स्ट्रिंग के बजाय संख्या प्राप्त करना चाहते हैं:

print np.array(list(mystr), dtype=int) 
# [1 0 0 1 1 0] 
10

आप उन्हें पढ़ सकता है के रूप में ASCII वर्ण तो 48 (0 की ASCII मूल्य) घटाना। यह बड़े तारों के लिए सबसे तेज़ तरीका होना चाहिए।

>>> np.fromstring("100110", np.int8) - 48 
array([1, 0, 0, 1, 1, 0], dtype=int8) 

वैकल्पिक रूप से, आप पहली बार पूर्णांकों की एक सूची के लिए स्ट्रिंग परिवर्तित कर सकते हैं:

>>> np.array(map(int, "100110")) 
array([1, 0, 0, 1, 1, 0]) 

संपादित: मैं था कुछ त्वरित समय और पहली विधि यह एक करने के लिए परिवर्तित करने की तुलना में 100 गुना अधिक तेजी से होता है पहले सूची