Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将字符串中的数字转换为数组_Python_Arrays_Numpy - Fatal编程技术网

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

在python中将字符串中的数字转换为数组,python,arrays,numpy,Python,Arrays,Numpy,我有一个.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')) 但这会让事

我有一个.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'))

但这会让事情变得更糟……

pandas
通过regex支持多个分隔符,
pd.read\u 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
我想你需要

df=pd.read_csv()
first_col=np.array(df.iloc[:0])
df_array=np.array(df.iloc[:,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')

实际的分隔符将是“
”、“
”,而不仅仅是“
”、“
”,但您可以使用
.dropna(axis=1)
@MaximilianPeters删除生成的NaN列。谢谢,我还没有测试过这段代码——只是一个概念证明。但是我还是更新了。对不起,问题是b矩阵不是整数
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)