gpt4 book ai didi

Python - 从文件中获取列迭代器(无需读取整个文件)

转载 作者:太空狗 更新时间:2023-10-30 01:09:31 24 4
gpt4 key购买 nike

我的主要目标是从一个巨大的浮点矩阵计算中位数(按列)。示例:

a = numpy.array(([1,1,3,2,7],[4,5,8,2,3],[1,6,9,3,2]))

numpy.median(a, axis=0)

Out[38]: array([ 1., 5., 8., 2., 3.])

矩阵太大,无法放入 Python 内存(~5 TB),因此我将其保存在一个 csv 文件中。所以我想遍历每一列并计算中位数。

有什么方法可以让我在不读取整个文件的情况下获得列迭代器?

关于计算矩阵中位数的任何其他想法也很好。谢谢!

最佳答案

如果您可以将每一列放入内存(您似乎暗示可以),那么这应该可行:

import itertools
import csv

def columns(file_name):
with open(file_name) as file:
data = csv.reader(file)
columns = len(next(data))
for column in range(columns):
with open(file_name) as file:
data = csv.reader(file)
yield [row[column] for row in data]

它的工作原理是找出我们有多少列,然后遍历文件,从每一行中取出当前列的项目。这意味着,我们一次最多使用一列的大小加上一行内存的大小。这是一个非常简单的生成器。请注意,我们必须不断重新打开文件,因为在遍历文件时会耗尽迭代器。

关于Python - 从文件中获取列迭代器(无需读取整个文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com