[英]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.