从Python中的txt文件中提取数字的行/列

时间:2017-04-19 20:19:37

标签: python arrays list numpy extraction

我是Python的新手,遇到了一个很小的问题(但似乎是一个非常困难的问题)。

我有一个txt文件,其中包含以下内容:

-2      2.1     -0.365635756
0       2.4      0.347433737
2       2.5      0.263774619
4       3.5     -0.244930974
6       4.2     -0.004564913

我的目标是以某种方式从Python中的文件中提取单独的行/列以用作列表或数组(同样,我对此还是新手)。那么,例如,如何使用第一列中的数据制作列表[-2,0,2,4,6]?

我目前在工作中有以下代码:

import numpy as np

with open('Numbers.txt', 'r') as f:
    fcontents = f.read()
    print(fcontents)

x = np.array(fcontents)

这样做的目的是编写一个程序,使用数组来计算项目指令中给出的不同变量。

3 个答案:

答案 0 :(得分:1)

这可能是pandas的工作:

import pandas as pd

df = pd.read_fwf('Numbers.txt', header=None)
first_col = df[0]

assert first_col.mean() == 2
assert first_col.median() == 2
assert sum(first_col) == 10

参考文献:

答案 1 :(得分:0)

我没有使用numpy,但如果你想分成列,你可以做这种事情

col1 = []
col2 = []
col3 = []

with open('Numbers.txt', 'r') as f:
    for line in f:
        first, second, third = line.split()
        col1.append(first)
        col2.append(second)
        col3.append(third)

print(col1)
print(col2)
print(col3)

输出

['-2', '0', '2', '4', '6']
['2.1', '2.4', '2.5', '3.5', '4.2']
['-0.365635756', '0.347433737', '0.263774619', '-0.244930974', '-0.004564913']

答案 2 :(得分:0)

您可以将数据导入为numpy.array

import numpy as np

data = np.genfromtxt('Numbers.txt', unpack=True).T

然后,检索列/行就像索引/切片numpy.array

一样简单
print(data[1,:])
print(data[:,1])

这将导致

[ 0.          2.4         0.34743374]
[ 2.1  2.4  2.5  3.5  4.2]