2013-06-28 41 views
0

我有一個非均勻數組'A'。在Python中爲高於閾值的值繪製出現次數

A = [1,3,2,4,..., 12002, 13242, ...] 

我想探索數組'A'中有多少元素的值高於某個閾值。

例如,有1000個元素的值大於1200,因此我想繪製值大於1200的元素的數量。此外,還有其他1500個元素的值大於110(這包括1000個元素,其值大於1200)。

這是一個相當大的數據集,所以我不想忽略任何類型的信息。

然後,我要繪製我想裝箱數據的值A對log(A)上述元素「N」的數目,即

**'Log N(> A)" vs. 'Log (A)'**. 

,但我非常不成功的。 我還沒有在python中做過那麼多的統計,所以我想知道是否有一種很好的方式來繪製這些數據?

在此先感謝。

回答

0

讓我帶另一裂紋在我們所擁有的:

A = [1, 3, 2, 4, ..., 12002, 13242, ...] 

# This is a List of 12,000 zeros. 
num_above = [0]*(12000) 

# Notice how we can re-write this for-loop! 
for i in B: 
    num_above = [val+1 if key <= i else val for key,val in enumerate(num_above)] 

我相信這是你想要的。最終名單num_above將使得高於5

解釋num_above[5]等於在A元素的個數:

最後一行是所有魔術發生。它遍歷A中的元素(i),並向num_above中索引小於i的所有元素添加一個元素。

enumerate(A)語句是一個enumerator產生元組的迭代器,包括在A中的鍵和所有元素的值:(0,1) (1,3) -> (2,2) -> (3,4) -> ...

此外,num_above = [x for y in List]語句被稱爲List Comprehension,並且是一個非常強大的工具在Python中。

改進:我看到您已經修改了您的問題以包含這些更改,但我認爲它們很重要。

  1. 我刪除了numpy依賴項。如果可能,刪除依賴項會降低項目的複雜性,特別是大型項目。
  2. 我也刪除了原始列表A。這可以替換爲基本上類似於A = range(12000)的東西。
+0

感謝您的幫助!我再一次讀到這個問題,這有點令人困惑。我再次編輯了這些問題。 謝謝! – Victor

+0

「我刪除了numpy的依賴關係。如果可能的話,刪除依賴關係可以降低項目的複雜性,特別是大型項目。「我不同意 - 這是'numpy'數組的'尖叫':'count =(A> thresh).sum()'。 –