小编Bra*_*mon的帖子

python 协程超时

如何让协程因超时而停止?

我不明白为什么 asyncio.wait_for() 对我不起作用。我有这样一段代码(计划实现 telnet 客户端):

def expect(self, pattern, timeout=20): 
    if type(pattern) == str:
        pattern = pattern.encode('ascii', 'ignore')        
    return self.loop.run_until_complete(asyncio.wait_for(self.asyncxpect(pattern), timeout))

async def asyncxpect(self, pattern): #receives data in a cumulative way until match is found
    regexp = re.compile(b'(?P<payload>[\s\S]*)(?P<pattern>%s)' %pattern)
    self.buffer = b''
    while True:
        # add timeout
        # add exception handling for unexpectedly closed connections
        data = await self.loop.sock_recv(self.sock, 10000) 
        self.buffer += data
        m = re.match(regexp, self.buffer)
        if m:
            payload = m.group('payload')
            match = m.group('pattern')
            return payload, match 
Run Code Online (Sandbox Code Playgroud)

正如我所认为的,这段代码在某个时刻(在等待语句中)将控制权返回给事件循环。我认为当没有更多数据可以接收时应该发生这种情况。如果事件循环有控制权,它可以超时停止。

但是,如果服务器没有发送任何有用的(匹配的)我的代码就会在这个循环中绊倒,就在等待点。 …

python coroutine python-sockets python-asyncio

2
推荐指数
1
解决办法
2345
查看次数

创建新列和删除 NaN 行时的 SettingwithCopy

我一直在四处阅读熊猫文档here并尝试从herehere周围发布的问题中尝试不同的代码行,我似乎无法摆脱带有复制警告的设置。我更愿意学习以“正确”的方式对其进行编码,而不是仅仅忽略警告。

以下代码行在 for 循环中,我不想多次生成此警告,因为它可能会减慢速度。

我正在尝试创建一个名称为:'E'+vs 的新列,其中 vs 是 for 循环中列表中的一个字符串

但是对于他们中的每一个,我仍然收到以下警告,即使是最后 3 行:

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
Run Code Online (Sandbox Code Playgroud)

以下是我迄今为止尝试过的麻烦行:

#based on research, the first two seem to be the "wrong" way

df_out['E'+vs] = df_out[kvs].rolling(v).mean().copy()
df_out['E'+vs] = df_out[kvs].rolling(v).mean()

df_out.loc[:,'E'+vs] = df_out[kvs].rolling(v).mean().copy()
df_out.loc[:,'E'+vs] = df_out[kvs].rolling(v).mean()
df_out.loc[:,'E'+vs] = df_out.loc[:,kvs].rolling(v).mean()
Run Code Online (Sandbox Code Playgroud)

另一个给出 SettingWithCopyWarning 的是这样的:

df_out.dropna(inplace=True,axis=0)
Run Code Online (Sandbox Code Playgroud)

这个也发出了警告(但我认为这个会)

df_out = df_out.dropna(inplace=True,axis=0)
Run Code Online (Sandbox Code Playgroud)

如何正确执行这两个操作? …

python python-3.x pandas chained-assignment

2
推荐指数
1
解决办法
1877
查看次数

我们如何在 statsmodels OLS 中计算截距和斜率?

在这里我问了如何在线性模型中计算 AIC。如果我用LinearRegression()方法替换方法linear_model.OLS以获得 AIC,那么如何计算 OLS 线性模型的斜率和截距?

import statsmodels.formula.api as smf
regr = smf.OLS(y, X, hasconst=True).fit()
Run Code Online (Sandbox Code Playgroud)

python linear-regression scikit-learn statsmodels

2
推荐指数
1
解决办法
6320
查看次数

Python 中的常量究竟由什么构成?

PEP 8规定

常量通常在模块级别定义,并全部用大写字母书写,并用下划线分隔单词。示例包括 MAX_OVERFLOWTOTAL

我知道这只是一个命名约定,但我很想知道是否有一个官方或广泛接受的定义来定义常量与半私有变量的实际构成。

这是否仅限于您所谓的数学常数?(即float、int、complex)

或者它会包括datetime.date在模块级别定义的对象或字符串之类的东西吗?具有混合类型的键/值的字典怎么样?如果答案是否定的,这些类型的对象是否应该像(准)私有变量一样定义_leading_underscore

python pep8 python-3.x

2
推荐指数
1
解决办法
1511
查看次数

获得numpy数组模式的最快方法是什么

我必须找到从 hdf5 文件中读取的 NumPy 数组的模式。NumPy 数组是 1d,包含浮点值。

my_array=f1[ds_name].value    
mod_value=scipy.stats.mode(my_array)
Run Code Online (Sandbox Code Playgroud)

我的数组是 1d,包含大约 1M 个值。我的脚本需要大约 15 分钟才能返回模式值。有什么办法可以让它更快吗?

另一个问题是为什么scipy.stats.median(my_array)模式有效时不起作用?

AttributeError: 模块 'scipy.stats' 没有属性 'median'

numpy scipy

2
推荐指数
1
解决办法
7742
查看次数

pandas groupby 中的分位数阈值/过滤器

我有一个分类变量和两个数字列:

np.random.seed(123)    
df = pd.DataFrame({'group' : ['a']*10+['b']*10,
                   'var1' : np.random.randn(20),
                   'var2' : np.random.randint(10,size=20)})
Run Code Online (Sandbox Code Playgroud)

我想通过 找到过滤后group的平均值,var1按 group限制df到前四分位var2数值。也就是说,每个组的阈值是:

thresh = df.groupby('group')['var2'].quantile(0.75)
Run Code Online (Sandbox Code Playgroud)

这是我想要结束的一个循环演示:

for group, frame in df.groupby('group'):
    print(frame[frame.var2 >= frame.var2.quantile(0.75)].var1.mean())
# -1.4713362407192072
# 0.15512098976530683
Run Code Online (Sandbox Code Playgroud)

结果应该是一个带有 ( group, var) 列的 DataFrame或一个由 索引的系列group。我相信解决方案可能涉及.transform/.apply但被困在那里。

python pandas split-apply-combine pandas-groupby

2
推荐指数
1
解决办法
2438
查看次数

我可以从Python中的变量调用方法吗?

我有一个示例课程.

class example(object):
    # ...
    def size(self):
        return somevalue
Run Code Online (Sandbox Code Playgroud)

如何在不分配新变量的情况下获取size值?instance.sizeinstance.size()size

python class

2
推荐指数
1
解决办法
48
查看次数

如何删除数组中最小的数字,如果有多个最小数字,则删除第一个

我正在尝试制作一个脚本,其中输入是一个带有随机数的数组。我尝试删除数组中的最低数字,这没有问题。但是,如果该数字在数组中多次出现,我如何确保只有该数字第一次出现才被删除?

假设我们有以下数组:

a = np.array([2,6,2,1,6,1,9])
Run Code Online (Sandbox Code Playgroud)

这里最低的数字是 1,但由于它出现了两次,我只想删除第一次出现,因此我得到以下数组:

 a = np.array([2,6,2,6,1,9])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy minimum python-3.x

2
推荐指数
1
解决办法
3474
查看次数

在日期时间内格式化月份名称缩写(Jan/Feb/...)

我正在尝试对以下形式的字符串进行日期时间格式编码:“06JAN2018”或“31DEC2017”。

我认为这是 format = '%d[xxxx]%Y' 但我不知道如何对其月份部分进行编码。

是否有可能的每种编码类型的列表?

python datetime

2
推荐指数
1
解决办法
9144
查看次数

如何根据概率分布在python中生成随机分类数据?

我试图从一个现有的列中生成一个随机的分类变量列,以创建一些综合数据。例如,如果我的列具有3个值0,1,2,其中0出现在50%的时间中,而1和2出现在30%和20%的时间中,则我希望新的随机列也具有相似(但不相同)的比例

关于交叉验证,有一个类似的问题已经使用R解决了。https://stats.stackexchange.com/questions/14158/how-to-generate-random-categorical-data。但是我想要一个Python解决方案

random numpy python-3.x pandas

2
推荐指数
1
解决办法
288
查看次数