问题描述
myTable = numpy.genfromtxt("myFile.csv",skip_header=1,delimiter=",",dtype=float)
我不知道表格的大小,它可能包含单行或单列。我希望得到一个二维阵列。这在大多数情况下都适用,但是,如果只有一行或一列,我将得到一维数组,这会扰乱我的执行力。
一个相关的问题是,包含“ 1,2”的文件和包含“ 1 \ n2”的文件具有相同的输出[1 2],而我希望第一个输出为[[1 2]],第二个[[1] [2]]
是否有一种方法可以在genfromtxt中指示预期输出的维数?另外,是否有其他工具可以从文件中读取表?
解决方法
使用readlines()逐行(行)进入文件。 然后在每一行中,使用column = len(row.split(';'))查找每一行的列数。
for row in file.readlines():
column=len(row.split(';'))
现在您可以提取所需的各种信息
,以下是我编写的代码,可能对您有所帮助,我还是新手,因此您可能会找到一个更好的解决方案
<END>
,
您可以使用try..except
语句将文件加载包装在raise
块中,以便在加载的表与所需的尺寸不匹配时,会出现错误消息。
import numpy
try:
myTable = numpy.genfromtxt(("myFile.csv",skip_header=1,delimiter=",",dtype=float)
if myTable.shape[0] == 1 or myTable.shape[1] == 1:
raise IndexError("The imported table has 2 or more dimensions!")
except:
raise
这样,每当您尝试将表加载到小于2维的内存中时,都会得到IndexError
以及在raise
语句中指定的错误消息。现在,您可以将该块包装到函数中,然后尝试从函数中加载表。此外,我建议创建一个熊猫数据框,以使其具有操作数据的通用性和简便性。