NumPy fromstring()

The fromstring() method creates a 1-D array from raw binary or text data in a string.

Example

import numpy as np

# create a string to read from
string1 = '1 2 3'

# create array from string array1 = np.fromstring(string1, sep =' ')
print(array1) # Output: [1. 2. 3.]

Note: fromstring() is commanly used for numerical data and thus byte support has been deprecated.


fromstring() Syntax

The syntax of fromstring() is:

numpy.fromstring(string, dtype=float, count=-1, sep, like=None)

fromstring() Argument

The fromstring() method takes the following arguments:

  • string- the string to read (str)
  • dtype(optional)- type of output array(dtype)
  • count(optional)- number of items to read(int)
  • sep- the sub-string separating elements in the string(str)
  • like(optional)- reference object used for the creation of non-NumPy arrays(array_like)

Note: The default value of count is -1, which means all data in the buffer.


fromstring() Return Value

The fromstring() method returns an array from a string.


Example 1: Create an Array Using fromstring()

import numpy as np

string1 = '12 13 14 15'
string2 = '12, 13, 14, 15'

# load from string with element separated by whitespace array1 = np.fromstring(string1, sep = ' ') # load from string with element separated by commas array2 = np.fromstring(string2, sep = ',')
print(array1) print(array2)

Output

[12. 13. 14. 15.]
[12. 13. 14. 15.]

Example 2: Use dtype Argument to Specify Data Types

The dtype argument helps specify the required datatype of created numpy arrays.

import numpy as np

string1 = '\x01\x02\x03\x04'

# load from the string as int8 array1 = np.fromstring(string1, dtype = np.uint8)
print(array1)
# load from the buffer as int16 array2 = np.fromstring(string1, dtype = np.uint16)
print(array2)

Output

<string>:7: DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead
[1 2 3 4]
<string>:11: DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead
[ 513 1027

Note: As mentioned above, fromstring() should only be used with numerical inputs and not byte strings.

When dtype = np.unit8, each byte in the byte string is interpreted as an 8-bit unsigned integer. Thus, array1 becomes [1 2 3 4].

When dtype = np.unit16, a byte-pair in byte string is interpreted as a 16-bit unsigned integer.

Thus, array2 has 2 elements \x01\x02 i.e. 2 * 256 + 1 = 513 and \x03\x04 i.e. 4 * 256 + 3 = 1027 and becomes [513 1027].


Example 3: Use count Argument to Limit the Data to Read

The count argument helps specify the number of items to read from the string.

string1 = '1 2 3 4'

import numpy as np

# load the all items from the buffer array1 = np.fromstring(string1, sep = ' ')
print(array1)
# load the first 3 items from the buffer array2 = np.fromstring(string1,sep = ' ', count = 3)
print(array2)
# load the first 2 items from the buffer array3 = np.fromstring(string1,sep = ' ', count = 2)
print(array3)

Output

[1. 2. 3. 4.]
[1. 2. 3.]
[1. 2.]