python - 将大型制表符分隔的 .txt 文件导入 Python

标签 python arrays list csv

我有一个制表符分隔的 .txt 文件,我试图将其导入到与文本文件格式相同的 Python 矩阵数组中,如下所示:

123088 266 248 244 266 244 277

123425 275 244 241 289 248 231

123540 156 654 189 354 156 987

请注意,上面还有很多行(大约 200 行)我想传递给 Python 并在从中创建矩阵数组时保持相同的格式。

我目前的代码是:

d = {}
with open('file name', 'rb') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter='\t')
    for row in csv_reader:
        d[row[0]] = row[1:]

它稍微做了我需要它做的事情,但不是我的目标。我想完成我可以输入 print(d[0,3]) 的代码,它会输出 248。

最佳答案

首先,您将其加载到字典中,它不会获取您想要的列表列表。

使用 CSV 模块生成这样的列表列表非常简单:

import csv
with open(path) as f:
    reader = csv.reader(f, delimiter="\t")
    d = list(reader)
print d[0][2] # 248

这会给你一个字符串列表的列表,所以如果你想得到数字,你必须转换为 int。

也就是说,如果您有一个大数组(或正在进行任何类型的数值计算),您应该考虑使用类似 NumPy 的东西或 pandas .如果你想使用 NumPy,你可以这样做

import numpy as np
d = np.loadtxt(path, delimiter="\t")
print d[0,2] # 248

作为奖励,NumPy 数组允许您进行快速向量/矩阵运算。 (另请注意,d[0][2] 也适用于 NumPy 数组)。

关于python - 将大型制表符分隔的 .txt 文件导入 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989647/

相关文章:

python - 使用 boto3 从 AWS Glue 获取表

javascript - 从路径字符串优化嵌套数组

Java:改变实例字段

Python:仅在列表末尾删除重复值

python - 自动查找每行的特定 pandas 列中包含的列表项的索引

Python 2.7 OpenCV : Extracting features/descriptors from image coordinates

python - 带 GPS 数据的加权 K 均值

python - 进度条使用 tqdm 和多进程将代码减慢 5 倍

c++ - 字符串运算符+(重载)char数组和string.in cpp中的不同行为

python - 列表理解分配/比较在 256 之后失败