函数创建数组返回工作信息

2024-09-30 16:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个函数,作为输入一个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语句是错误的。如有任何帮助或建议,我们将不胜感激


Tags: 文件csv数据函数信息forreturn数组
2条回答

@OsmosisJonesLoL的方式很棒,但还有另一种选择。您可以使用csv module打开一个.csv文件,然后迭代每一行并对前两列进行切片,然后打印它

import csv
DOCUMENT = 'file.csv'

def generate_arrays(document):
    file = csv.reader(open(document), delimiter=',')
    for row in file:
        print(row[:2])

generate_arrays(DOCUMENT)

或者您可以将每个二维数组附加到空列表中

import csv
DOCUMENT = 'file.csv'

def generate_arrays(document):
    arrays = []
    file = csv.reader(open(document), delimiter=',')
    for row in file:
        arrays.append(row[:2])
    return arrays

print(generate_arrays(DOCUMENT))

关于这段代码,你已经发布了。我不太明白theDatanumbers是从哪里来的?我想应该是同一个变量。代码实际上应该返回最后一行,而不是第一行。 要返回每个二维数组,需要先将每一行附加到空数组,然后返回它。实际上,这里不需要使用numpyarray方法

还要小心使用open方法,因为您需要在处理完文件后显式关闭它。所以使用with语句更方便。它确保在我们读取完文件内容后关闭文件。 注意line_slices[:2]等于[line_slices[0], line_slices[1]]

DOCUMENT = 'file.csv'

def generate_arrays(document):
    array = []
    with open(document) as file:
        for line in file:
            line_slices = line.split(",")
            array.append(line_slices[:2])
        return array

print(generate_arrays(DOCUMENT))

有什么理由不使用numpy库处理这个问题吗?不知道我是否遗漏了什么

np.genfromtxt('sample.csv', skip_header=1, usecols=(0,1), delimiter=',')

资料来源:https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

相关问题 更多 >