簡體   English   中英

一次迭代一行二維 numpy 數組 python

[英]iterate one row at a time of a 2D numpy array python

我有如下所示的數組。

[['dad', 'mom', 'test1.txt']
['brother', 'sister', 'test2.txt']
['uncle', 'aunty', 'test3.txt']
['grandpa', 'grandma', 'test4.txt']]

例如,我想迭代。 我從第一個第一個元素打開 test1.txt 文件,如果拆分索引中存在字符串“爸爸”和“媽媽” ,則過濾文件並讀取 append 的年齡。 同樣對於 text2.txt 文件,如果存在'brother' 和 'sister'然后讀取並過濾,我希望它在嵌套列表中不一樣。

我有類似下面的東西

lst_age=[]
for data in ele_arry:
    file = data[2]
    stg1 = data[1]
    stg2 = data[0]
    files = open(file, 'r').read()
    for line in files:
        formattedline = line.split(' ')
        if formattedline[1] == stg1 and formattedline[2] == stg2:
            lst_age.append(formattedline[3])

逐行分割后的文本文件如下所示:

['1','dad', 'mom', '27']
['2','dad', 'mom', '34']
['3','daughter', 'mom', '42']
['4','dad', 'son', '21']
['5','daughter', 'son', '22']

我需要的 output 用於lst_age變量

['27', '34'] #for file text1.txt
['28', '43' ] #for file text2.txt
#similarly for all the 4 files 

但現在我將所有文件中的年齡元素合並為一個。

['27', '34','28', '43'] 

這沒有在上面提到所需的 output。 有人可以幫我解決這個問題嗎?

謝謝!

發生這種情況是因為使用files = open(file, 'r').read()您將返回文件 object 而不是可迭代列表。 您可以使用readlines()返回包含文件行的列表:

ele_arry =[['dad', 'mom', 'C:\\Users\\Miguel\\Desktop\\test1.txt'],
['brother', 'sister', 'C:\\Users\\Miguel\\Desktop\\test2.txt'],
['uncle', 'aunty', 'C:\\Users\\Miguel\\Desktop\\test3.txt'],
['grandpa', 'grandma', 'C:\\Users\\Miguel\\Desktop\\test4.txt']]


lst_age=[]
for data in ele_arry:
    file = data[2]
    stg2 = data[1]
    stg1 = data[0]
    files = open(file, 'r').readlines()
    lst_agefile=[]
    for line in files:
        formattedline = line.split(' ')
        if formattedline[1] == stg1 and formattedline[2] == stg2:
            lst_agefile.append(formattedline[3].replace('\n',''))
    lst_age.append(lst_agefile)
for i in lst_age:
    print(i)

Output:

['27', '34'] 
['28', '43' ]

單線方式:

lst_age=[[line.split(' ')[3].replace('\n','') for line in open(data[2], 'r').readlines() if line.split(' ')[1] == data[0] and line.split(' ')[2] ==  data[1]] for data in ele_arry]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM