2016-02-19 73 views
2

我頂2標籤的numpy的數組:在列表的列表倒車元素蟒蛇

n = [['20011' '20048'] 
    ['20011' '20048'] 
    ['20011' '20048'] 
    ['20011' '20048']] 

我想他們在相反的順序:

[['20048' '20011'] 
['20048' '20011'] 
['20048' '20011']] 

我該怎麼辦所以在保持格式一致的情況下?

代碼至今:

n = model1.classes_[order[:,-5:]] 
print(n) 
r = [p[::-1] for p in n] 
print(r) 

輸出:

[array(['20048', '20011'], 
     dtype='|S5'), array(['20048', '20011'], 
     dtype='|S5'), array(['20048', '20011'], 
     dtype='|S5'), array(['20048', '20011'], 
     dtype='|S5')] 

需要嘗試擺脫dtypes,並只保留扭轉陣列。

+0

等都不是代碼編寫的服務,如果你想獲得你需要更新你至今嘗試過的代碼,你的問題一個合適的回答和[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – Kasramvd

+1

'[L [:: - 1]列表中的L]' – nneonneo

+0

@minks,添加打印陣列的實際輸出 –

回答

2
l = [['a', 'b', 'c'], ['d', 'e', 'f']] 

然後,像這樣

[li[::-1] for li in l] 

一個簡單的列表理解爲您提供了所需的輸出:

[['c', 'b', 'a'], ['f', 'e', 'd']] 

編輯:

當你改變了你的問題:

比方說,你現在有一個數組的數組:

import numpy as np 
l2 = np.array([np.array(['a', 'b', 'c']), np.array(['d', 'e', 'f'])]) 

然後,你可以做以下襬脫dtypes的:

map(list, l2[:, ::-1]) 

它給你:

[['c', 'b', 'a'], ['f', 'e', 'd']] 

但是從你的問題來看,你很難說出你想要的輸出格式。

+0

我試着用較小的名單做:[[ '20011' '20048'] [ '20011' '20048'] [ '20011' '20048'] [ '20011' '20048'] 和接收的是這樣的: 陣列([ '20048', '20011'], D類= '| S5'),陣列([ '20048', '20011'], D類= '| S5'),陣列([ '20048','20011'], dtype ='| S5'),array(['20048','20011'], dtype ='| S5')] 爲什麼顯示dtype? – minks

+0

@minks,你有numpy的陣列,而不是Python列表 –

+0

你確定你列出的工作,而不是與numpy的陣列!? – Cleb

3

你的列表似乎缺少逗號所以你確實有一個列表一個字符串,但你可以用list.reverse就地如果要修改原來的子列表:

for sub in lists: 
    sub.reverse() 

你確實有一個numpy的陣列因此假定它是正確的格式,您可以:

In [50]: arr 
Out[50]: 
array([['20015', '20013', '20044', '20001', '20002'], 
     ['20002', '20015', '20001', '20013', '20070']], 
     dtype='|S5') 

In [51]: arr[:,::-1] 
Out[51]: 
array([['20002', '20001', '20044', '20013', '20015'], 
     ['20070', '20013', '20001', '20015', '20002']], 
     dtype='|S5') 

要保存到一個文件是這樣的:

In [57]: arr[:,::-1].tofile("out.txt",sep=",") 

In [58]: cat out.txt 
20002,20001,20044,20013,20015,20070,20013,20001,20015,20002 

如果你想每行savetxt一行:

In [94]: np.savetxt("out.txt",arr[:,::-1],fmt="%s") 

In [95]: cat out.txt 
20002 20001 20044 20013 20015 
20070 20013 20001 20015 20002 
+0

你也可以做到在一個行:'[sub.reverse()在列表子]' – zondo

+0

@zondo,真實的,但你會使用副作用名單補償和創建無的 –

+0

@zondo名單這是行不通的,我得到了[無,無,無,無] –