草庐IT

implementing-efficient-counters-w

全部标签

python - 从 Counter 对象中提取字典

我想统计一个单词在sting列表中出现的次数。['thisisaredball','thisisanotherredball']我写了下面的代码counts=Counter()forsentenceinlines:counts.update(word.strip('.,?!"\'').lower()forwordinsentence.split())它给了我以下格式的结果Counter({'':6,'red':2,'this':2,....})如何只获取字典? 最佳答案 如果字典真的是您想要的,您可以执行以下操作。dict(coun

python - 测试python Counter是否包含在另一个Counter中

如何测试pythonCounter使用以下定义包含在另一个中:ACounteraiscontainedinaCounterbif,andonlyif,foreverykeykina,thevaluea[k]islessorequaltothevalueb[k].TheCounter({'a':1,'b':1})iscontainedinCounter({'a':2,'b':2})butitisnotcontainedinCounter({'a':2,'c':2}).我认为这是一个糟糕的设计选择,但在python2.x中,比较运算符(、、>=、>)不使用以前的定义,因此第三个计数器被认为

python - NumPy / python : Efficient matrix as multiplication of cartesian product of input matrix

问题:输入是一个(i,j)-矩阵M。期望的输出是一个(i^n,j^n)矩阵K,其中n是所取产品的数量。获得所需输出的详细方法如下生成n行排列I的所有数组(总共i**n个n数组)生成所有n列排列J的数组(总共j**n个n数组)K[i,j]=m[I[0],J[0]]*...*m[I[n],J[n]]forallninrange(len(J))我完成此操作的直接方法是生成一个标签列表,其中包含范围(len(np.shape(m)[0]))和范围(len(np.shape(m)[1]))分别代表行和列。之后,您可以像上面最后一个要点那样将它们相乘。然而,这对于大型输入矩阵并不实用——所以我正在

python - Python 中的 Tarfile : Can I untar more efficiently by extracting only some of the data?

我正在从USGS订购一大堆陆地卫星场景,这些场景作为tar.gz存档。我正在编写一个简单的python脚本来解压缩它们。每个文件包含15张大小为60-120MB的tiff图像,总计刚刚超过2GB。我可以使用以下代码轻松提取整个文件:importtarfilefileName="LT50250232011160-SC20140922132408.tar.gz"tfile=tarfile.open(fileName,'r:gz')tfile.extractall("newfolder/")我实际上只需要这15个tiff中的6个,在标题中标识为“带”。这些是一些较大的文件,因此它们加在一起约

python - 为什么 collections.Counter 将 numpy.nan 视为平等的?

我对以下行为感到惊讶:>>>importnumpyasnp>>>fromcollectionsimportCounter>>>my_list=[1,2,2,np.nan,np.nan]>>>Counter(my_list)Counter({nan:2,2:2,1:1})#Countertreatsnp.nanasequaland#tellsmethatIhavetwoofthem>>>np.nan==np.nan#However,np.nan'sarenotequalFalse这是怎么回事?当我使用float('nan')而不是np.nan时,我得到了预期的行为:>>>my_list=

python 3 : Most efficient way to create a [func(i) for i in range(N)] list comprehension

假设我有一个函数func(i),它为整数i创建一个对象,而N是某个非负整数。那么创建等于此列表的列表(不是范围)的最快方法是什么mylist=[func(i)foriinrange(N)]不求助于高级方法,例如在C中创建函数?我对上述列表理解的主要关注是我不确定python是否事先知道range(N)的长度来预分配mylist,因此必须逐步重新分配列表。是这种情况还是python足够聪明,可以先将mylist分配给长度N,然后再计算它的元素?如果没有,创建mylist的最佳方法是什么?也许是这个?mylist=[None]*Nforiinrange(N):mylist[i]=func(

Python/numpy : Most efficient way to sum n elements of an array, 这样每个输出元素都是前n个输入元素的总和?

我想编写一个函数,它将一个展平数组作为输入并返回一个等长数组,其中包含输入数组中前n个元素的总和,初始n-1元素输出数组的设置为NaN。例如,如果数组有十个elements=[2,4,3,7,6,1,9,4,6,5]和n=3那么结果数组应该是[NaN,NaN,9,14,16,14,16,14,19,15]。我想到的一种方法:defsum_n_values(flat_array,n):sums=np.full(flat_array.shape,np.NaN)foriinrange(n-1,flat_array.shape[0]):sums[i]=np.sum(flat_array[i-n

Python - 从映射、非整数值创建 Counter()

考虑从映射初始化的基本计数器:dict_1={'a':1,'b':2,'c':3}count_1=Counter(dict_1)printcount_1>>>Counter({'c':3,'b':2,'a':1})一切都是有道理的。但是Counter还允许我从具有非整数作为键和值的字典进行初始化。例如,dict_2={'a':'apple','b':'banana','c':'cheese'}count_2=Counter(dict_2)printcount_2>>>Counter({'c':'cheese','b':'banana','a':'apple'})上面写的代码是Pytho

python - Python 中的列表理解 : efficient selection in a list

假设我有一个元素列表,我只想根据特定函数(例如到另一个元素的距离)选择其中的一些元素。我想得到一个包含距离和元素的元组列表。于是,我写了下面的代码result=[(myFunction(C),C)forCinoriginalListifmyFunction(C)但是myFunction是一个非常耗时的函数,而且originalList比较大。这样做,myFunction将为每个选定的元素调用两次。那么,有没有办法避免这种情况呢??我还有另外两种可能,但都不太好:第一个是创建未过滤的列表unfiltered=[(myFunction(C),C)forCinoriginalList]然后排

python - Django Celery 实现 - OSError : [Errno 38] Function not implemented

我安装了django-celery并尝试启动工作服务器,但我收到一个OSError,表示某个功能未实现。我在VPS上运行CentOS5.4版(最终版):.broker->amqp://guest@localhost:5672/.queues->.celery->exchange:celery(direct)binding:celery.concurrency->4.loader->djcelery.loaders.DjangoLoader.logfile->[stderr]@WARNING.events->OFF.beat->OFF[2010-07-2217:10:01,364:WAR