繁体   English   中英

在python中将字符串中的数字转换为数组

[英]convert numbers in string to array in python

我有一个.csv文件,它看起来像

 1, 1 2 3 4 5
 3, 2 3 4 5 6
 2, 5 6 5 4 8
 5, 5 4 8 6 2
 ... 

如何获得第一列

a = [1 3 2 5 ...] 

和矩阵

b = [ 1 2 3 4 5
      2 3 4 5 6
      5 6 5 4 8
      5 4 8 6 2 ]

与类型整数numpy数组,我试过

data = np.asarray(pd.read_csv('Data.csv'))

但它让事情变得更糟......

我想你需要,

df=pd.read_csv()
first_col=np.array(df.iloc[:0])
df_array=np.array(df.iloc[:,1:])

pandas通过regex, pd.read_csvengine='python'支持多个分隔符。 你可以尝试这样的事情:

df = pd.read_csv('Data.csv', header=None, sep=' |, ',
                 engine='python', dtype=int)

然后检索您的数据如下:

a = df.iloc[:, 0].values
b = df.iloc[:, 1:].values

纯Numpy方法将使用np.loadtext()并通过传入转换器函数将字符串转换为正确的类型:

In [70]: col1, col2 = np.loadtxt('test.csv', converters={0:int, 1:bytes.decode}, dtype=str, delimiter=',', unpack=True)

In [71]: col1 = col1.astype(int)

In [72]: col2 = np.vstack(np.core.defchararray.split(col2)).astype(int)

结果:

In [73]: col1
Out[73]: array([1, 3, 2, 5])

In [74]: col2
Out[74]: 
array([[1, 2, 3, 4, 5],
       [2, 3, 4, 5, 6],
       [5, 6, 5, 4, 8],
       [5, 4, 8, 6, 2]])

请注意,在将col2转换为整数数组之前,它是一个字符串数组,如下所示:

In [76]: col2
Out[76]: 
array([' 1 2 3 4 5', ' 2 3 4 5 6', ' 5 6 5 4 8', ' 5 4 8 6 2'], 
      dtype='<U10')

如果你也希望它们分开但在下一步的字符串类型中你只需要使用vstack()astype() 在这种情况下,你会得到:

In [77]: np.core.defchararray.split(col2)
Out[77]: 
array([['1', '2', '3', '4', '5'], ['2', '3', '4', '5', '6'],
       ['5', '6', '5', '4', '8'], ['5', '4', '8', '6', '2']], dtype=object)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM