如何在Python中将混合数据类型的文件读入numpy数组?
如何在Python中将混合数据类型的文件读入numpy数组 我是一个新的python学习者。我正在尝试将一个具有混合数据类型的现有文件读入numpy数组 文件data.txt的内容(如果逗号不是一个好符号,可以用空格代替): 预期的输出numpy数组如下所示:如何在Python中将混合数据类型的文件读入numpy数组?,python,arrays,numpy,readfile,mixed,Python,Arrays,Numpy,Readfile,Mixed,如何在Python中将混合数据类型的文件读入numpy数组 我是一个新的python学习者。我正在尝试将一个具有混合数据类型的现有文件读入numpy数组 文件data.txt的内容(如果逗号不是一个好符号,可以用空格代替): 预期的输出numpy数组如下所示: array([[None,'A','B','C','D'], ['A', 0, 3, 5, -1 ], ['B', 3, 0, 1, 6 ], ['C', 5, 1, 0,
array([[None,'A','B','C','D'],
['A', 0, 3, 5, -1 ],
['B', 3, 0, 1, 6 ],
['C', 5, 1, 0, 2 ],
['D', -1, 6, 2, 0 ]])
您可以使用:
然后,您可以使用值访问底层数组:
>>> df.values
array([[ 0, 3, 5, -1],
[ 3, 0, 1, 6],
[ 5, 1, 0, 2],
[-1, 6, 2, 0]], dtype=int64)
至少据我所知,无法将该文件读入普通(非对象)2D数组,因为记录数组要求任何列都遵循相同的类型。虽然它可以用于最后第二行(str,int,int,int,int)
,但不能用于第一行(NoneType,str,str,str,str)
。至少使用pandas,您可以将第一行和第一列解释为可以具有不同类型的索引
但是,如果不需要第一行和第一列,可以使用:
可能的重复使用普通numpy数组(如果是2D数组,则至少不可能)无法准确获得预期的输出。但是,您可以尝试将其读入pandas.DataFrame
。
>>> import pandas as pd
>>> df = pd.read_csv('data.txt', index_col=0, sep=',')
>>> print(df)
'A' 'B' 'C' 'D'
'A' 0 3 5 -1
'B' 3 0 1 6
'C' 5 1 0 2
'D' -1 6 2 0
>>> df.values
array([[ 0, 3, 5, -1],
[ 3, 0, 1, 6],
[ 5, 1, 0, 2],
[-1, 6, 2, 0]], dtype=int64)
>>> import numpy as np
>>> np.loadtxt('myfile.txt', delimiter=',', skiprows=1, usecols=[1,2,3,4], dtype=int)
array([[ 0, 3, 5, -1],
[ 3, 0, 1, 6],
[ 5, 1, 0, 2],
[-1, 6, 2, 0]])