我想创建一个函数,作为输入一个CSV文件。此文件包含4列30行数据。在我的函数中,我想为文件中存在的每一行数据创建一个二维数组,其中x坐标是存储在第一列中的信息,y坐标是存储在第二列中的信息
document = open("d.csv")
headers = document.readline()
def generateArrays(document):
for theData in document:
editDocument = theData.strip().split(",")
array = np.array((editDocument[0], editDocument[1]))
return array
print(generateArrays(document))
当我调用函数并打印出来时,我希望看到30个不同的2D数组打印出来。然而,我只看到: [1,29],这是存储在CSV文件第一行中的信息。我在函数外部测试了for循环,它返回了30个2D数组,这让我相信可能return语句是错误的。如有任何帮助或建议,我们将不胜感激
@OsmosisJonesLoL的方式很棒,但还有另一种选择。您可以使用csv module打开一个.csv文件,然后迭代每一行并对前两列进行切片,然后打印它
或者您可以将每个二维数组附加到空列表中
关于这段代码,你已经发布了。我不太明白
theData
和numbers
是从哪里来的?我想应该是同一个变量。代码实际上应该返回最后一行,而不是第一行。 要返回每个二维数组,需要先将每一行附加到空数组,然后返回它。实际上,这里不需要使用numpyarray
方法还要小心使用
open
方法,因为您需要在处理完文件后显式关闭它。所以使用with语句更方便。它确保在我们读取完文件内容后关闭文件。 注意line_slices[:2]
等于[line_slices[0], line_slices[1]]
有什么理由不使用numpy库处理这个问题吗?不知道我是否遗漏了什么
资料来源:https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
相关问题 更多 >
编程相关推荐