我的ipython地图解决问题(matplotlib)

时间:2014-09-26 18:29:44

标签: python arrays

我一直在使用python,我是所有这些语言的新手。香港专业教育学院一直在努力使列表成为数组,然后在每行上给出最高价值。

现在这个信息来自txt,到目前为止我所拥有的是:

import re
from numpy import *
filesis= open("/home/ana/Escritorio/Python/CATALOGO_NIC_MW (otra copia).txt")
filelines= filesis.readlines()
magn1, magn2, magn3= [],[], [], []



for reader in filelines:        
    mag1=(((re.sub(r'[^0-9|.]', r'.00', (reader[56:59]))))) 
    magn1=(mag1[0:3])
    #****************************************************
    mag2=(((re.sub(r'[^0-9|.]', r'.00 ', (reader[64:67])))))
    magn2=(mag2[0:3])
    #****************************************************
    mag3=(((re.sub(r'[^0-9|.]', r'.00 ', (reader[72:75])))))
    magn3=(mag3[0:3])
    #****************************************************
    for index in range(len(magnitud1)):
        magnitudes.append([magnitud1[index],magnitud2[index],magnitud3[index]])
        print magnitudes

但我的输出如下:

    [['5', '6', '6']]
    [['5', '6', '6'], ['.', '.', '.']]
    [['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1']]
    [['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6']]
    [['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.']]
    [['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.',     '.'],['5', '1', '1']]
[['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6']]
[['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.']]
[['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1']]
[['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['6', '6', '6']]
[['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['6', '6', '6'], ['.', '.', '.']]
[['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['5', '6', '6'], ['.', '.', '.'], ['5', '1', '1'], ['6', '6', '6'], ['.', '.', '.'], ['5', '8', '8']]

很抱歉很长的帖子,但我想告诉你它的样子。

1522  0 0  0 0  0.00   11.830 -86.980   5.0 NIC  0     5.5SCAL 6.1WCAL 6.1WXXX1
1524  0 0  0 0  0.00   11.950 -86.150   5.0 NIC  0     5.5SCAL 6.1WCAL 6.1WXXX1
1527  0 0  0 0  0.00   12.600 -86.860   5.0 NIC  0     5.5SCAL 6.1WCAL 6.1WXXX1
1528  5 0  0 0  0.00   12.400 -86.800  33.0 NIC  0     6.5SCAL 6.8WCAL 6.8WXXX1


5.5SCAL 6.1WCAL 6.1WXXX1
5.5SCAL 6.1WCAL 6.1WXXX1
5.5SCAL 6.1WCAL 6.1WXXX1
6.5SCAL 6.8WCAL 6.8WXXX1

信息来自上面的文本文件,然后在下面你会看到最后三行是我的信息来源。

magnitude=[[5.5],[6.1],[6.1]]
           [5.5],[6.1],[6.1]
           [5.5],[6.1],[6.1]
           [6.5],[6.8],[6.8]]

magnitude=[[6.1]]
           [6.1]
           [6.1]
           [6.8]]

我希望有一个类似magnitude的数组,然后获得数组中每一行的最高值,如上所示。 任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

您的源看起来像TSV(制表符分隔值)或使用固定宽度列的文本文件。如果是TSV,请查看csv模块。如果它使用固定宽度的文本格式,只需遍历文件并使用字符串切片来获取所需的值。我不知道你为什么使用正则表达式,但我猜你使用的是错误的表达式。

当你设法从文件中获取一个二维数组时,内置函数max将返回一个可迭代的最大项。

>>> max([[5.5],[6.1],[6.1]])
[6.1]

所以你可以这样做:

>>> [max(line) for line in magnitude]