Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python使用过滤器计算iterable中的元素_Python_Iterator_Iterable_Python Collections - Fatal编程技术网

python使用过滤器计算iterable中的元素

python使用过滤器计算iterable中的元素,python,iterator,iterable,python-collections,Python,Iterator,Iterable,Python Collections,要对列表中的元素进行计数,可以使用,但如果只需要对某些元素进行计数,该怎么办 我已经设置了这个示例(请注意:numpy只是为了方便起见。通常,该列表将包含任意python对象): 我想计算一个数字在这个列表中出现的频率,但我只对数字感兴趣如果这是关于大型numpy数组,那么最好利用矢量化numpy操作 %%time np.unique(numbers[numbers <= 10], return_counts=True) ​相比之下,我自己对您的代码计时的次数要比您的略高。如果这是关于大

要对列表中的元素进行计数,可以使用,但如果只需要对某些元素进行计数,该怎么办

我已经设置了这个示例(请注意:numpy只是为了方便起见。通常,该列表将包含任意python对象):


我想计算一个数字在这个列表中出现的频率,但我只对数字感兴趣如果这是关于大型numpy数组,那么最好利用矢量化numpy操作

%%time
np.unique(numbers[numbers <= 10], return_counts=True)

​相比之下,我自己对您的代码计时的次数要比您的略高。

如果这是关于大型numpy阵列,您最好利用矢量化numpy操作

%%time
np.unique(numbers[numbers <= 10], return_counts=True)

​相比之下,我自己对您的代码计时的次数比您的略高。

我知道unique,但这与numpy阵列无关。randint函数对于建立一个示例非常方便。非常好的主意:)我知道unique,但这不是numpy阵列。randint函数对于建立一个示例非常方便。不过这主意不错:)
%%time
numbers = [number for number in numbers if number<=10]
counter = Counter(numbers)

CPU times: user 1.3 s, sys: 22.1 ms, total: 1.32 s
Wall time: 1.33 s
%%time

counter = defaultdict(int)
for number in numbers:
    if number > 10:
        continue
    counter[number]+=1

CPU times: user 1.99 s, sys: 11.5 ms, total: 2 s
Wall time: 2.01 s
%%time
iterator = (number for number in numbers if number <= 10)
counter = Counter(iterator)

CPU times: user 1.38 s, sys: 8.51 ms, total: 1.39 s
Wall time: 1.39 s
%%time
np.unique(numbers[numbers <= 10], return_counts=True)
Wall time: 31.2 ms

(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10]),
 array([10055, 10090,  9941, 10002,  9994,  9989, 10070,  9859, 10038,
        10028,  9965], dtype=int64))