小编shx*_*hx2的帖子

Numpy二维移动平均线

我有一个2d numpy数组.我想将每个条目的n个最近条目的平均值取,就像在一维数组上获得滑动平均值一样.最干净的方法是什么?

python numpy moving-average

11
推荐指数
1
解决办法
8136
查看次数

Python sort()列表的第一个元素

我有一个包含非特定数量元素的列表,但嵌套列表的每个第一个元素都是一个标识符,我想使用该标识符按顺序对列表进行排序

list = [['D', 'F', 'E', 'D', 'F', 'D'],['A', 'F', 'E', 'C', 'F', 'E'],['C', 'E', 'E', 'F', 'E', 'E'],['B', 'F', 'E', 'D', 'F', 'F']]
Run Code Online (Sandbox Code Playgroud)

经过排序

list = [['A', 'F', 'E', 'C', 'F', 'E'],['B', 'F', 'E', 'D', 'F', 'F'],['C', 'E', 'E', 'F', 'E', 'E'],['D', 'F', 'E', 'D', 'F', 'D']]
Run Code Online (Sandbox Code Playgroud)

我正在使用python 3.3.3

python sorting list python-3.3

10
推荐指数
4
解决办法
4万
查看次数

Python strptime解析没有世纪的年份:在今年之前假设?

我正在解析Python 2.7中的一些日期时间字符串datetime.strptime.我想假设日期早于现在.

但strptime的%y运算符默认情况下不这样做:

d = '10/12/68'
n = datetime.strptime(d, '%d/%m/%y')
print n
2068-12-10 00:00:00
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我认为Python 681968常见的吗?

或者我应该只是解析字符串并插入1920手动插入?

python datetime

10
推荐指数
2
解决办法
1360
查看次数

在函数调用之间拆分 kwargs

我不时面临这种困境。假设我有一个这样的函数:

def foo(..., **kwargs):
    ...
    actor = make_actor(..., **a_kwargs)
    return actor.act(..., **b_kwargs)
Run Code Online (Sandbox Code Playgroud)

我想让调用者指定要传递给make_actor()(a_kwargs) 和act()(b_kwargs) 的kwargs 。问题是,当然,foo只能采取**kwargs一次。

(在几乎所有情况下 a_kwargs 和 b_kwargs 不共享公共密钥,因此我们无需担心参数名称冲突)。

我可以想到几种方法,每种方法都有自己明显的缺点/限制。

def foo1(..., **kwargs):
    ...
    a_kwargs = {k:kwargs.pop(k) for k in kwargs.keys() if k in ['arg1','arg2',...]}
    actor = make_actor(..., **a_kwargs)
    return actor.act(..., **kwargs)

def foo2(..., arg1=DEFAULT1, arg2=DEFAULT2, ..., **b_kwargs):
    ...
    actor = make_actor(..., arg1=arg1, arg2=arg2, ...)
    return actor.act(..., **b_kwargs)

def foo3(..., a_kwargs={}, **b_kwargs):
    ...
    actor = make_actor(..., **a_kwargs)
    return actor.act(..., **b_kwargs) …
Run Code Online (Sandbox Code Playgroud)

python arguments parameter-passing keyword-argument

10
推荐指数
1
解决办法
753
查看次数

两组间隔的差异

我正在尝试编写一些代码来计算两组间隔A - B之间的差异,间隔端点是整数,但我很有希望得到有效的解决方案,任何建议都会得到很多赞赏的例子:[(1,4) ),(7,9)] - [(3,5)] = [(1,3),(7,9)]

这是迄今为止我尝试过的最好的(两个列表已经排序)

class tp():
   def __repr__(self):
       return '(%.2f,%.2f)' % (self.start, self.end)
   def __init__(self,start,end): 
       self.start=start
       self.end=end



z=[tp(3,5)] #intervals to be subtracted
s=[tp(1, 4)),tp(7, 9), tp(3,4),tp(4,6)]

for x in s[:]:
   if z.end < x.start:
    break
   elif z.start < x.start and z.end > x.start and z.end < x.end:
    x.start=z.end
   elif z.start < x.start and z.end > x.end:
    s.remove(x)
   elif z.start > x.start and z.end < x.end:
    s.append(tp(x.start,z.start))
    s.append(tp(z.end,x.end))
    s.remove(x)
   elif z.start > x.start and z.start < …
Run Code Online (Sandbox Code Playgroud)

python algorithm intervals set-difference

9
推荐指数
1
解决办法
1784
查看次数

Numpy.dot错误?NaN行为不一致

我注意到涉及s和0 numpy.dotnan的行为不一致.

任何人都可以理解它吗?这是一个错误吗?这是特定的dot功能吗?

我正在使用numpy v1.6.1,64bit,在linux上运行(也在v1.6.2上测试过).我还在windows 32bit上的v1.8.0上进行了测试(所以我不知道这些差异是由于版本,操作系统还是拱门).

from numpy import *
0*nan, nan*0
=> (nan, nan)  # makes sense

#1
a = array([[0]])
b = array([[nan]])
dot(a, b)
=> array([[ nan]])  # OK

#2 -- adding a value to b. the first value in the result is
#     not expected to be affected.
a = array([[0]])
b = array([[nan, 1]])
dot(a, b)
=> array([[ 0.,  0.]])  # EXPECTED : array([[ nan,  0.]])
# (also happens in …
Run Code Online (Sandbox Code Playgroud)

python numpy nan blas

9
推荐指数
1
解决办法
1395
查看次数

将所有STDIN"啜饮"成字符串的最有效方法

我正在为python 2.7编写一个电子邮件解析器,它将使用别名通过sendmail调用,使用电子邮件模块解析,然后处理并存储到oracle数据库中:

来自/ etc/aliases:

myalias:| /my/python/script.py

我无法将所有stdin"sl"到一个字符串对象中,我可以将其与电子邮件模块一起使用:

import email

# Slurp stdin and store into message
message =

msg = email.message_from_string(message)

# Do something with it
print msg['Subject']
Run Code Online (Sandbox Code Playgroud)

最有效的方法是什么?我已经尝试过stdin.readlines()但它最终成为一个列表.

感谢任何帮助.(对不起,如果这是noobish ...我是一个perl转换器,并被迫使用python标准化我的工具,这只是我的第二个脚本.好吧不是真的"强迫",我一直想要这样做一段时间但不是像现在这样的截止日期之枪

python email io stdin python-2.7

9
推荐指数
1
解决办法
5916
查看次数

排序列表时避免不必要的密钥评估

我有一个列表,我想按多个keys 排序,如:

L = [ ... ]
L.sort(key = lambda x: ( f(x), g(x) ))
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,这会导致不必要的调用g,我想避免(因为可能很慢).换句话说,我想部分和懒惰地评估关键.

例如,如果f是唯一的L(即len(L) == len(set(map(f,L))))不g应该进行任何调用.

什么是最优雅/ pythonic的方式来做到这一点?


我能想到的一种方法是定义一个自定义cmp函数(L.sort(cmp=partial_cmp)),但IMO比使用key参数更不优雅和复杂.

另一种方法是定义一个key-wrapper类,它使用生成器表达式生成键的不同部分,并覆盖比较运算符以逐个比较.但是,我觉得必须有一个更简单的方法......


编辑:我对通过多个函数排序的一般问题的解决方案感兴趣,不仅如上面的例子中的两个.

python sorting lazy-evaluation python-2.7

8
推荐指数
1
解决办法
415
查看次数

处理IncompleteRead,URLError

它是一个Web挖掘脚本.

def printer(q,missing):
    while 1:
        tmpurl=q.get()
        try:
            image=urllib2.urlopen(tmpurl).read()
        except httplib.HTTPException:
            missing.put(tmpurl)
            continue
        wf=open(tmpurl[-35:]+".jpg","wb")
        wf.write(image)
        wf.close()
Run Code Online (Sandbox Code Playgroud)

q是一个Queue()由Urls组成的``缺少一个空队列来收集错误提升网址

它由10个线程并行运行.

每次我跑这个,我得到了这个.

  File "C:\Python27\lib\socket.py", line 351, in read
    data = self._sock.recv(rbufsize)
  File "C:\Python27\lib\httplib.py", line 541, in read
    return self._read_chunked(amt)
  File "C:\Python27\lib\httplib.py", line 592, in _read_chunked
    value.append(self._safe_read(amt))
  File "C:\Python27\lib\httplib.py", line 649, in _safe_read
    raise IncompleteRead(''.join(s), amt)
IncompleteRead: IncompleteRead(5274 bytes read, 2918 more expected)
Run Code Online (Sandbox Code Playgroud)

但我确实使用了except......我尝试过其他类似的东西

httplib.IncompleteRead
urllib2.URLError
Run Code Online (Sandbox Code Playgroud)

甚至,

image=urllib2.urlopen(tmpurl,timeout=999999).read()
Run Code Online (Sandbox Code Playgroud)

但这都不起作用..

我怎么能抓住IncompleteReadURLError

python error-handling urllib2 httplib

7
推荐指数
1
解决办法
7012
查看次数

令人惊讶地缓慢插入mongodb上限的集合

我正在使用mongodb的上限集合+ tailable游标作为pubsub引擎,使用pymongo.(这种方法在这里描述).我的环境包括几个主题,几个发布者和几十个订阅者.

这很有效,除了每隔一段时间我遇到插入操作,这需要花费很长时间才能完成.

我的理解是mongodb可以支持> 10K docs/sec的插入,这就是为什么我很惊讶单个插入操作可能需要85ms.(我在生产环境中也观察过几次> 1秒,但无法使用此SSCCE重现它).

为了将延迟降至最低,日记功能被禁用,并且我使用最低写入问题,这有助于,但没有解决问题.

是什么导致这种情况,我该如何解决?


这是一个SSCCE.我并行运行以下脚本两次:

import time, pymongo, pandas as pd
DBNAME = 'test5'
COLLNAME = 'abc'
mongo = pymongo.MongoClient()
#mongo[DBNAME].drop_collection(COLLNAME)
if DBNAME not in mongo.database_names():
    coll = mongo[DBNAME].create_collection(COLLNAME,
                                    capped = True, size = 50 * 1024 * 1024, max = 1024 * 1024,
                                    fsync = False,  # no delays please (FYI, journaling is disabled)
                                    #autoIndexId = False,
                                    )

tarr = []
for _ in range(1000):
    msg …
Run Code Online (Sandbox Code Playgroud)

publish-subscribe mongodb throughput pymongo

7
推荐指数
1
解决办法
314
查看次数