2017-05-09 80 views
-1

重新排列陣列[輸入圖像的描述在這裏][1]我有我從文件基於用戶選擇

example of which I have in my array

像這樣讀爲圖中所示的陣列。

  1. 我想,我檢查每個陣列放置在索引0最少數量和索引2數量最多,在索引2,INDEX3其餘兩個號碼給它安排的順序;

  2. 所以這應該適用於我從文件中讀取的所有數據。 請幫助我一個很好的答案。當我嘗試這樣做時,將每一行都視爲索引。我不知道如何把每一個元素放在一行中。因爲我的計劃是根據index0中最小的元素和index1中最大的元素進行排序,但在這裏顯示爲index0是一個完整的行。

例如,我想這樣的

['0','1','0.42673399999999995', '0.76885199999999998'] 
['0.76885200000000031','2','0.87031900000000029','1'] 
['0.8703189999999994','3','1.3058599999999998','2'] 
+0

第一行,自0 <0.42之後的第一個元素不應該是0.42而不是0.42? – Nuageux

+0

歡迎使用stackoverflow。請,你能提供一些你的具體問題的代碼嗎?這可以證明你嘗試了多遠,它會幫助其他成員更好地理解你的問題,當時,你會給他們一個你的問題的背景。請檢查這些鏈接:https://stackoverflow.com/help/mcve和https://stackoverflow.com/help/how-to-ask –

回答

0

輸出I排序第一,然後得到最小的元素,規模最大,把其餘的後面。 因此,根據您的數據:

import numpy 

a = [[0, 0.42673399999999995, 1, 0.76885199999999998], 
    [1, 0.76885200000000031, 2, 0.87031900000000029], 
    [2, 0.8703189999999994, 3, 1.3058599999999998]] 

a = numpy.sort(a, axis=1) 
a = numpy.hstack((a[:,0][:,None], a[:,-1][:,None], a[:,1:-1])) 

print a 

輸出:

[[ 0.  1.  0.426734 0.768852] 
[ 0.768852 2.  0.870319 1.  ] 
[ 0.870319 3.  1.30586 2.  ]] 

編輯版本,讀取CSV文件:

import numpy 

a = [] 
filename = open("doc.csv") 
for line in filename.readlines(): 
    a.append(line.strip().split(",")) 
a = numpy.sort(a, axis=1) 
a = numpy.hstack((a[:,0][:,None], a[:,-1][:,None], a[:,1:-1])) 

print a 

新的輸出:

[['0' '1' '0.42673399999999995' '0.76885199999999998'] 
['0.76885200000000031' '2' '0.87031900000000029' '1'] 
['0.8703189999999994' '3' '1.3058599999999998' '2']] 

請檢查您的CSV文件末尾是否有空行(如果您有但無法更改您的CSV文件,則可以通過在a.append(...)之前添加一個條件來修復)

+0

我得到這個錯誤 - a.sort(axis,kind,order) ValueError:axis(= 1)越界 – sana

+0

@sana你能否在你的問題中提供** a **的確切格式?我想我們沒有完全相同的格式 – Nuageux

+0

感謝您的回覆。但是,它改變了索引0處的最小數字和索引1中的最大數字,無論我爲文件讀取哪個數組? – sana