我有.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'))
但它会让事情变得更糟......
答案 0 :(得分:2)
我认为你需要,
df=pd.read_csv()
first_col=np.array(df.iloc[:0])
df_array=np.array(df.iloc[:,1:])
答案 1 :(得分:1)
pandas
通过正则表达式pd.read_csv
,engine='python'
支持多个分隔符。你可以尝试这样的事情:
df = pd.read_csv('Data.csv', header=None, sep=' |, ',
engine='python', dtype=int)
然后按如下方式检索您的数据:
a = df.iloc[:, 0].values
b = df.iloc[:, 1:].values
答案 2 :(得分:1)
纯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)