小编Mit*_*ops的帖子

Python 3替换了不推荐使用的compiler.ast展平函数

弃用编译器包以来,推荐使用嵌套列表的方法是什么?

>>> from compiler.ast import flatten
>>> flatten(["junk",["nested stuff"],[],[[]]])
['junk', 'nested stuff']
Run Code Online (Sandbox Code Playgroud)

我知道有一些堆栈溢出答案用于列表展平,但我希望pythonic,标准包,"一个,最好只有一个,显而易见的方法"来做到这一点.

python flatten python-3.x

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

在kivy小部件中访问父对象的大小参数

我正在学习Kivy,并希望将一个对象置于父对象的中心.我知道我可以用kv语言中的self关键字访问对象自己的属性,但是有没有用于访问父窗口小部件的快捷方式,比如大小和位置属性?root.size和parent.size都失败了.

python kivy

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

在Kivy中居物体

我试图在布局中居中一个圆圈.我目前正在做一些填充计算,但我也在寻找更好的方法,并想象一个预定义的布局可能是更好的选择.这是我的代码产生的......

对于方形布局:

在此输入图像描述

对于宽布局:

在此输入图像描述

所以,这是正确的行为,这很好.但有更好的方法吗?(例如,我可以想象这会变得非常圆形.)

这是我的代码:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Color, Ellipse, Rectangle

class MinimalApp(App):
    title = 'My App'
    def build(self):
        root = RootLayout()
        return(root)

class RootLayout(AnchorLayout):
    pass

class Circley(RelativeLayout):
    pass

if __name__ == '__main__':
    MinimalApp().run()
Run Code Online (Sandbox Code Playgroud)

和KV:

#:kivy 1.7.2
#:import kivy kivy

<RootLayout>:
    anchor_x: 'center'                              # I think this /is/ centered
    anchor_y: 'center' 
    canvas.before: …
Run Code Online (Sandbox Code Playgroud)

python layout user-interface kivy

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

使用 Huggingface Transformers 从磁盘加载预训练模型

from_pretrained的文档,我知道我不必每次都下载预训练的向量,我可以使用以下语法保存它们并从磁盘加载:

  - a path to a `directory` containing vocabulary files required by the tokenizer, for instance saved using the :func:`~transformers.PreTrainedTokenizer.save_pretrained` method, e.g.: ``./my_model_directory/``.
  - (not applicable to all derived classes, deprecated) a path or url to a single saved vocabulary file if and only if the tokenizer only requires a single vocabulary file (e.g. Bert, XLNet), e.g.: ``./my_model_directory/vocab.txt``.
Run Code Online (Sandbox Code Playgroud)

所以,我去了模型中心:

我找到了我想要的模型:

我从他们提供给这个存储库的链接下载了它:

使用掩码语言建模 (MLM) 目标的英语语言预训练模型。它是在本文中介绍的,并首次在此存储库中发布。此模型区分大小写:它区分英语和英语。

存储在:

  /my/local/models/cased_L-12_H-768_A-12/
Run Code Online (Sandbox Code Playgroud)

其中包含:

 ./
 ../
 bert_config.json
 bert_model.ckpt.data-00000-of-00001
 bert_model.ckpt.index
 bert_model.ckpt.meta
 vocab.txt …
Run Code Online (Sandbox Code Playgroud)

huggingface-transformers

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

从Auto.arima到R中的预测

我不太明白的是如何在语法forecast()中的适用外部回归量library(forecast)R.

我的合体看起来像这样:

fit <- auto.arima(Y,xreg=factors)

其中Y是一个timeSeries对象100×1和因素是timeSeries对象100×5.

当我去预测时,我申请......

forecast(fit, h=horizon)

我收到一个错误:

Error in forecast.Arima(fit, h = horizon) : No regressors provided

它是否要我从适合中添加xregressors?我以为这些都包含在fit对象中fit$xreg.这是否意味着它要求xregressors的未来值,或者我应该重复我在拟合集中使用的相同值?该文档未涵盖xreg预测步骤的含义.

我相信这一切都意味着我应该使用

forecast(fit, h=horizon,xreg=factors)

要么

forecast(fit, h=horizon,xreg=fit$xreg)

这给出了相同的结果.但我不确定预测步骤是将这些因素解释为未来的价值,还是作为以前的因素恰当地解释.所以,

  1. 正如我所料,这是根据纯粹过去的价值做出的预测吗?
  2. 为什么我必须两次指定xreg值?如果我将它们排除,它就不会运行,因此它不像选项那样运行.

r

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

如何在pymongo中返回一个mongodb对象数组(没有光标)?MapReduce可以这样做吗?

我在mongo中设置了一个数据库,我正在使用pymongo进行访问.

我希望能够将一小组字段拖入字典列表中.所以,就像我输入mongo shell时的内容...

db.find({},{"variable1_of_interest":1, "variable2_of_interest":1}).limit(2).pretty()
Run Code Online (Sandbox Code Playgroud)

我想要一个python语句,如:

x = db.find({},{"variable1_of_interest":1, "variable2_of_interest":1})
Run Code Online (Sandbox Code Playgroud)

其中x是某种类型的数组结构而不是游标---也就是说,而不是迭代,如:

data = []
x = db.find({},{"variable1_of_interest":1, "variable2_of_interest":1})
for i in x:
    data.append(x)
Run Code Online (Sandbox Code Playgroud)

我是否有可能使用MapReduce将其转化为单行?就像是

db.find({},{"variable1_of_interest":1, "variable2_of_interest":1}).map_reduce(mapper, reducer, "data")
Run Code Online (Sandbox Code Playgroud)

我打算将此数据集输出到R进行某些分析,但我想将IO集中在Python中.

mongodb pymongo

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

是否有可能在python shebang中包含命令行选项?

我在我的python脚本的顶部有规范的shebang.

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

但是,我仍然经常想在运行脚本时将无缓冲的输出导出到日志文件中,所以我最终调用:

$ python -u myscript.py &> myscript.out &
Run Code Online (Sandbox Code Playgroud)

我可以像这样在shebang中嵌入-u选项吗?

#!/usr/bin/env python -u
Run Code Online (Sandbox Code Playgroud)

并且只打电话:

$ ./myscript.py &> myscript.out &
Run Code Online (Sandbox Code Playgroud)

......仍然没有缓解?我怀疑这不起作用,并希望在尝试之前检查.有什么东西可以实现这一目标吗?

python linux command-line

9
推荐指数
2
解决办法
2837
查看次数

在unix命令行中删除文件的前N行

我正在尝试从非常非常大的文件中删除前37行.我开始尝试使用sed和awk,但它们似乎需要将数据复制到新文件中.我正在寻找一个"删除就地线"的方法,不像sed -i是不制作任何类型的副本,而只是从现有文件中删除行.

这就是我所做的......

awk 'NR > 37' file.xml > 'f2.xml'
sed -i '1,37d' file.xml
Run Code Online (Sandbox Code Playgroud)

这两个似乎都做了完整的副本.是否还有其他简单的CLI可以在没有完整文档遍历的情况下快速完成此操作?

bash awk sed command-line-interface

9
推荐指数
3
解决办法
3万
查看次数

Python argparse parse_args到全局命名空间(或者这是一个坏主意的原因)

我主要使用argparse在python中创建命令行脚本,我通常使用的习惯用法是将参数指定为对象的属性,然后将它们分别解析为与其属性名称匹配的变量.这似乎有点重复.有没有办法将它们全部分配到全局命名空间并删除分配步骤; 或者通常情况下,某些python行为对我来说似乎是违反直觉的,有些明智的,python专家指出,有一个很好的理由我不应该这样做或者想要这样做吗?

我现在拥有的是:

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--db",type=str, dest='db', nargs='?', default="test")
    parser.add_argument("--collection",type=str, dest='collection', nargs='?', help="Collection, default is test", default="test")
    args = parser.parse_args()
    db = args.db                   # gross! 
    collection = args.collection   # yuck!
    print(db)
    print(collection)
Run Code Online (Sandbox Code Playgroud)

我想要的是:

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--db",type=str, dest='db', nargs='?', default="test")
    parser.add_argument("--collection",type=str, dest='collection', nargs='?', help="Collection, default is test", default="test")
    parser.SUPER_parse_args() # now, db and collection are already in the namespace!
    print(db)
    print(collection)
Run Code Online (Sandbox Code Playgroud)

当我只有2个参数时似乎并不多,但是如果我有10个左右,那么将赋值步骤加倍,我在args对象中已经存在的属性重命名为全局命名空间,开始让我感到烦恼.

python argparse

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

在kivy中旋转触摸事件上的对象

我正在制作一个像大表盘一样旋转的圆圈.目前,我在顶部有一个箭头,显示表盘朝向哪个方向.我希望它的行为有点像一个老式的旋转手机,这样当你的手指/光标向下时你可以旋转它,但它会(放慢)在你松开后慢慢地回到顶部.

这是我的对象的样子:

在此输入图像描述

这是我的代码:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
import math

from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Color, Ellipse, Rectangle

class MinimalApp(App):
    title = 'My App'
    def build(self):
        root = RootLayout()
        return(root)

class RootLayout(AnchorLayout):
    pass

class Circley(RelativeLayout):
    angle = 0
    def on_touch_down(self, touch):
        ud = touch.ud
        ud['group'] = g = str(touch.uid)
        return True
    def on_touch_move(self, touch):
        ud = touch.ud
#        print(touch.x, …
Run Code Online (Sandbox Code Playgroud)

python layout user-interface kivy

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