2014-07-21 24 views
0

首先抱歉,但我沒有很好的編程技巧,我在自然科學的碩士論文中學習Python。numpy.random.permutation失去一列

在我的劇本有這一段代碼:

self._dumpArrayToFile(movers, 'movers_'+str(y)+'_'+str(r)+'.csv') 
moversCats = numpy.random.permutation(movers['cat']) 
self._dumpArrayToFile(moversCats, 'movers_'+str(y)+'_'+str(r)+'_shuffled.csv') 

第一行打印出具有兩列的.csv文件,第二行的第一列(cat)和最後一行洗牌陣列打印出混洗文件;問題在於混洗文件只有一列,即cat

如何在不丟失第二列的情況下洗牌數組?

+0

誰是已經工作的腳本跟我研究者試圖打亂整個搬運工陣列,但是這給了一些錯誤,即重複 – grouchopower

回答

1

您只傳遞一列到permutation,所以這些都是亂碼。每the documentation

如果x是一個多維數組,它僅沿其第一索引混洗。

的例子清楚地表明這意味着什麼:

>>> arr = np.arange(9).reshape((3, 3)) 
>>> np.random.permutation(arr) 
array([[6, 7, 8], 
     [0, 1, 2], 
     [3, 4, 5]]) 

注行的內容保持不變,但它們是隨機重新排序。因此,您可以通過整個陣列,而不僅僅是cat柱:

moversCats = numpy.random.permutation(movers)