2014-12-04 32 views
1

在numpy中提取一列數據的首選方法是什麼?這是首選的numpy風格? array.T [x]或array [:,0]

array[:,x] 

array.T[x] 

我發現,具有數據的與沿列的行和數據字段的陣列是清潔器在numpy的操縱:

array[x] 

獲得整個系列沿着一個變量而不是上述選項。 但是按列排序的變量是標準文件格式。

任何有關處理數據的最簡單方法的偏好?

我應該在讀取它時轉置所有數據,然後在輸出時再次轉置?

+1

確定爲什麼不... ...?首選的方法是最適合你的方法... – 2014-12-04 17:58:08

+0

只是想知道別人做什麼。也因爲......「應該有一個 - 最好只有一個 - 明顯的方法來做到這一點 儘管這種方式一開始可能並不明顯,除非你是荷蘭人。」 – salotz 2014-12-04 19:22:00

+0

我想不出'array.T [x]'有問題,但它不常用。它不容易推廣到更多維度。 – hpaulj 2014-12-04 23:21:07

回答

0

你應該更喜歡切片[:, x],有以下幾個原因:

  1. 這是更快,可能是因爲你沒有調換整個陣列從中提取了一塊。經測試在Python 3.5.1,NumPy的1.11.0:

    >>> timeit.timeit('A[:,568]', setup = 'import numpy as np\nA = np.random.uniform(size=(1000,1000))') 
    0.21135332298581488 
    >>> timeit.timeit('A.T[568]', setup = 'import numpy as np\nA = np.random.uniform(size=(1000,1000))') 
    0.3025632489880081 
    
  2. 它推廣了一個簡單的方法,以高維數組,像A[3, :, 4]

  3. 它反映數組作爲多維對象的思維方式與NumPy ,而不是列表(列表)的列表。