What is the fastest way to convert string to array in python?
convert string to array python
python split string by character count
convert string to set python
python convert string to list without split
python array to list of strings
convert string to vector python
python split word into letters
This is a line I read from a text file:
[54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]
I used readline() to read it in as a string. Now what is the fastest way to convert it back to an array?
I'm not sure that this is the fastest, but it's definitely the safest/easiest:
import ast lst = ast.literal_eval(s)
eval would work too:
lst = eval(s)
Some basic timings from my machine:
>>> s = '[54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]' >>> def f1(): ... eval(s) ... >>> def f2(): ... ast.literal_eval(s) ... >>> timeit.timeit('f1()', 'from __main__ import f1') 31.415852785110474 >>> timeit.timeit('f2()', 'from __main__ import f2') 46.25958704948425
So, according to my computer,
eval is about 50% faster than
eval is terribly unsafe and should never be used on any string unless you trust it completely. Unless this is a real demonstratable bottleneck and you trust the input 100%, I would consider the little bit of extra time worth it in exchange for being able to sleep soundly at night.
Python, Let's discuss a few ways to convert an array of strings to array of floats. Method #1 : Using astype. filter_none. edit close. play_arrow. link brightness_4 This is a line I read from a text file: [54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1] I used readline() to read it in as a string. Now what is the fastest way to convert it
Since we care about speed, in this particular case I might use
>>> import ast, json >>> s = "[54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]" >>> %timeit ast.literal_eval(s) 10000 loops, best of 3: 61.6 µs per loop >>> %timeit eval(s) 10000 loops, best of 3: 45.7 µs per loop >>> %timeit json.loads(s) 100000 loops, best of 3: 6.61 µs per loop >>> json.loads(s) [54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]
(Note that this works here because this line is sufficiently JSON-like. It can't be used everywhere that
ast.literal_eval can because not all Python literal syntax is valid JSON.)
Python, To do this we use the split() method. Syntax: string.split("delimiter"). Examples: Input : "Geeks for Geeks" Output : ['Geeks' How to convert a Python csv string to array? Python Server Side Programming Programming Easiest way is to use the str.split method to split on every occurance of ',' and map every string to the strip method to remove any leading/trailing whitespace.
If that's the string, go here http://docs.python.org/2/library/functions.html#eval
>>> s = "[54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]" >>> eval(s) [54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]
Python String split() Method, The split() method splits a string into a list. You can specify the separator, default separator is any whitespace. Note: When maxsplit is specified, the list will import array integerValue = array.array("I", 'y\xcc\xa6\xbb') Warning: the above is strongly platform-specific. Both the “I” specifier and the endianness of the string->int conversion are dependent on your particular Python implementation. But if you want to convert many integers/strings at once, then the array module does it quickly.
Here's my result of an actual string separated by
stringValue = "123 456 789 012 345 678"
String to List
intValue = list(map(int, stringValue.split(' ')))
time taken 7.586999345221557e-06
[76, 96, 127, 255, 136, 164]
time taken trying to print it 6.697199933114462e-05
String to List to numpy
intValue = np.array(list(map(int, stringValue.split(' '))))
time taken 2.631999996083323e-05
[ 76 96 127 255 136 164]
time taken trying to print it 0.002241893000245909
String to numpy array
intValue = np.fromstring(stringValue,dtype=int,sep=' ')
time taken 1.3830000170855783e-05
[ 76 96 127 255 136 164]
time taken trying to print it 0.0003395890007595881
How to convert a NumPy array of strings to an array of floats in Python, Kite is a free autocomplete for Python developers. Code faster with the Kite plugin for your code editor, featuring Line-of-Code Completions and cloudless Python | Convert list to Python array Sometimes while working in Python we can have a problem in which we need to restrict the data elements to be just of one type. List, can be heterogeneous, can have data of multiple data types and it is sometimes undesirable.
numpy.asarray, Convert the input to an array. Parameters: a : array_like. Input data, in any form that can be str is a flexible way to represent an integer in a variety of different number systems.. Conclusion. Congratulations! You’ve learned so much about integers and how to represent and convert them between Python string and int data types.
In Python, how do I convert a string to a list in which each character , How do I write a Python program to sum the elements of an array? 1,187 Views · How do I convert string value like 0830 (which means 8:30) into time and add or subtract minutes (ex: 0830 + 15 Protect apps fast, so you don't get hacked. source (Optional) - source to initialize the array of bytes. encoding (Optional) - if source is a string, the encoding of the string. errors (Optional) - if source is a string, the action to take when the encoding conversion fails (Read more: String encoding) The source parameter can be used to initialize the byte array in the following ways:
- You have a
list, not an
array. There are subtle differences...
- And by far the safest.
eval(s)may be the fastest.
- @JonathonReinhart -- Yeah, seriously. I'm not sure I've ever seen it go up that fast.
- @mgilson That's what she said.
- @TimPeters -- You're correct.
evalis about 50% faster on my machine.
- This use of eval is disturbing.
- Cool! I wouldn't have guessed that - impressive :-)
- Sure DSM... I post a good answer and then you just have to go and trump it. Kudos to you (and since Kudos aren't an official unit of StackOverflow currency, +1 along with it).
- I prefer the solution with json as using eval could end terribly wrong.
- @ᴋᴇʏsᴇʀ , I accept the suggestion, but I disagree on explaining
eval. It's there, in the official python docs I posted, and IMHO it's more instructive to go there and read instead of repeating a piece of information here (and it's more "pythonic" too.)
- I'm not saying it's a bad link :p (it most definitely isn't), I'm just saying you should have at least once sentence of meta-text :)