簡體   English   中英

將列表元素轉換成數組

[英]Convert list elements into array

我有一個正在解析的列表tsv文件,想要將其轉換為數組。

這是文件格式-

jobname1 queue maphours reducehours
jobname2 queue maphours reducehours

with open(file.tsv) as tsv:
    line = [elem.strip().split('\t') for elem in tsv]
    vals = np.asarray(line)
    print vals[0]
    print vals[4]

Vals當前返回以下輸出-

['job1', 'queue', '1.0', '0.0\n']
['job2', 'queue', '1.0', '0.0\n']

我想將整個文件中一行中的每個元素轉換為一個數組對象-

vals[0] = job1 vals[1] = queue vals[2] = 1.0 vals[3] = 0.0 

我該如何實現?

據我了解,您想在numpy中創建2D數組,其中文件的每一行是一行,對應於所創建的數組,文件中的列是數組中的一列。 如果是這樣,您可以按照以下步驟進行操作:

例如,如果您的數據文件是:

jobname1    queue   1   3
jobname2    queue   2   4
jobname41   queue   1   1
jobname32   queue   2   2
jobname21   queue   3   4
jobname12   queue   1   6

如下代碼:

with open(file) as tsv:
    line = [elem.strip().split('\t') for elem in tsv]

vals = np.asarray(line) 

將導致以下vals數組:

[['jobname1' 'queue' '1' '3']
 ['jobname2' 'queue' '2' '4']
 ['jobname41' 'queue' '1' '1']
 ['jobname32' 'queue' '2' '2']
 ['jobname21' 'queue' '3' '4']
 ['jobname12' 'queue' '1' '6']]

獲取您可以執行的工作名稱:

print(vals[:,0])
% gives ['jobname1' 'jobname2' 'jobname41' 'jobname32' 'jobname21' 'jobname12']

或者,如果您想要包含某些作業的行,則可以執行以下操作:

print(vals[np.apply_along_axis(lambda row: row[0] == 'jobname1', 1, vals)])

您確定需要陣列嗎? 如果您想要一個Numpy數組,@ Marcin的答案會更完整。

Python沒有一個數組(有Python數據結構的列表在這里 )。 有一個“ C數組周圍的薄包裝器” 為了在C數組周圍使用包裝器,您必須指定數組將要保存的類型( 在這里,您會在頂部找到類型代碼列表,在底部找到示例):

如果要使用numpy數組,則應該可以使用:

import numpy as np
myarray = np.asarray(yourList)

這里收養。

暫無
暫無

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

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