*已更改为较小的示例,因为StackEx无法显示281个长示例。
我已经使用np.genfromtxt将具有18列的8997行加载到ndarray中,但是它制作了具有8997行的一维数组。
data [0]打印第一行
data [0] [0]第一个元素
data [0,0]打印以下错误:
回溯(最近通话最近): 文件“”,第1行,位于 数据[0,0] IndexError:数组的索引过多
我可以将其转换为2D ndarray吗? genfromtxt为什么不创建2D naarray?
如果有帮助,
len(data [0])= 18,但data [0] .shape返回“()”。
因此,genfrontxt正在检测每行的每个元素,但将它们存储为一行。是否有一种优雅的方法可以将此1D数组转换为8997 x 18 2D数组?
编辑以供参考:
加载命令:
data = np.genfromtxt(filepath.replace('。dfn','.dat'),dtype = None,names = csvnames)
数据= np.genfromtxt(filepath.replace('。dfn','.dat'),dtype = None,名称= csvnames,分隔符=宽度)
我使用了两者,并得到了相同的ndarray。我输入了列名列表。使用固定宽度不会改变结果。我让函数确定数据类型,这很好。
数据属性
data.shape(8997,)
数据文件的第一行-(第一列是字符串值DATA)
DATA 190010.0 1284 4 190010 1783000 20170122 0 131.000035 -31.255325 119016.47 6535194.03 58.55 62.06 987.22 22.61 55076.69 10476.91 8155.08 57238.0957 57238.6536 58639.18 57795.78
ndarray的第一行->数据[0]
(b'DATA', 190010., 1284, 4, 190010, 1783000, 20170122, 0, 131.000035, -31.255325, 119016.47, 6535194.03, 58.55, 62.06, 987.22, 22.61, 17830. , 133.71)
data.type
[('COMM', 'S4'), ('FLTLINE', '<f8'), ('Project', '<i4'), ('Flight', '<i4'), ('Line', '<i4'), ('Fid', '<i4'), ('YYYYMMDD', '<i4'), ('Bearing', '<i4'), ('Long', '<f8'), ('LATITUDE', '<f8'), ('EAST', '<f8'), ('NORTH', '<f8'), ('RadAlt', '<f8'), ('LasAlt', '<f8'), ('Press', '<f8'), ('Temp', '<f8'), ('GPSTime', '<f8'), ('GPSHt', '<f8')]