0

我有一个非均匀数组'A'。

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 中做过那么多的统计,所以我想知道是否有一种很好的方法来绘制这些数据?

提前致谢。

4

1 回答 1

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将使得 fornum_above[5]等于其中A大于 5 的元素数。

说明:

最后一行是所有魔法发生的地方。它遍历 A( i) 中的元素,并将num_above索引小于 的所有元素加一i

enumerate(A)语句是一个枚举器,它生成一个元组迭代器,其中包括 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)
于 2013-06-28T20:02:24.237 回答