在使用numpy读取txt文件时跳过包含字符串的结尾行以生成数值数组

epi*_*nio 7 python numpy scipy

我正在尝试生成一个从互联网上读取文本文件的数组.

我的目标是使用Python而不是MATLAB来替换MATLAB中的这一步:

url=['http://www.cdc.noaa.gov/Correlation/amon.us.long.data'];
urlwrite(url,'file.txt');
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码:

urllib.urlretrieve('http://www.cdc.noaa.gov/Correlation/amon.us.long.data', '/Users/epy/file2.txt')
a = np.loadtxt('/Users/epy/file2.txt', skiprows=1, dtype=None)
Run Code Online (Sandbox Code Playgroud)

但由于文件末尾的文本描述,它失败了.

你知道在最后是否存在跳过X行的方法,或者我必须使用某种字符串操作(readlines?)?

Joe*_*ton 10

有关更复杂的文本加载,请查看numpy.genfromtxt.

它比较慢numpy.loadtxt但更灵活.

在你的情况下(我在这里避免保存临时文件...):

import numpy as np
import urllib2

url = 'http://www.cdc.noaa.gov/Correlation/amon.us.long.data'
data = np.genfromtxt(urllib2.urlopen(url), skip_header=1, skip_footer=4)
Run Code Online (Sandbox Code Playgroud)