Per the docs for numpy.genfromtxt:
Note that generators must return byte strings in Python 3k.
So instead of creating an StringIO
object, create a BytesIO
:
import numpy as np
import io
s = io.BytesIO(open('2e70dfa1.csv', 'rb').read().replace(b';',b','))
data = np.genfromtxt(s,dtype=int,delimiter=',')
yields
array([[1497484825, 34425, -4, 28, -14,
-4, 28, -14, -4, 28,
-14, -4, 28, -14, -4,
28, -14, -4, 28, -14],
[1497484837, 34476, -4, 28, -14,
-4, 28, -14, -4, 28,
-14, -4, 28, -14, -4,
28, -14, -4, 28, -14]])
Note that if you have Pandas installed, you could use pd.read_table
which would allow you to specify a regex pattern as a delimiter:
import pandas as pd
df = pd.read_table('2e70dfa1.csv', sep=';|,', engine='python', header=None)
print(df)
yields
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 1497484825 34425 -4 28 -14 -4 28 -14 -4 28 -14 -4 28 -14 -4 28 -14 -4 28 -14
1 1497484837 34476 -4 28 -14 -4 28 -14 -4 28 -14 -4 28 -14 -4 28 -14 -4 28 -14
pd.read_table
returns a DataFrame. If you need a NumPy array, you could access it through its values
attribute:
In [24]: df.values
Out[24]:
array([[1497484825, 34425, -4, 28, -14,
-4, 28, -14, -4, 28,
-14, -4, 28, -14, -4,
28, -14, -4, 28, -14],
[1497484837, 34476, -4, 28, -14,
-4, 28, -14, -4, 28,
-14, -4, 28, -14, -4,
28, -14, -4, 28, -14]])