小编Fal*_*ler的帖子

PyQt5无法导入QtGui

我刚从PyQt4转到5,我遇到了QtGui的问题.我使用32位Windows安装程序安装,而不是我自己的构建.

当我做:

from PyQt5 import QtGui
Run Code Online (Sandbox Code Playgroud)

我明白了

class MainWindow(QtGui.QMainWindow, UI.MainUI.Ui_MainWindow):
AttributeError: 'module' object has no attribute 'QMainWindow'
Run Code Online (Sandbox Code Playgroud)

所以我试过了

from PyQt5.QtWidgets import QtGui
Run Code Online (Sandbox Code Playgroud)

结果如下:

ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)

然后我尝试根据Pyinstaller更改sys.path :ImportError:无法导入名称QtGui工作但它仍然给我相同

ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)

更新:看起来我确实导入了QtGui,因为当我进入IDLE并尝试它时,它仍然自动完成QMovie和一大堆其他属性.有什么理由QMainWindow不会在那里吗?(事实并非如此,QDialog也不重要)

python pyqt python-3.x pyqt5

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

Python - 将字典打印为带有标题的水平表

我有一本字典:

d = {1: ["Spices", math.floor(random.gauss(40, 5))],
    2: ["Other stuff", math.floor(random.gauss(20, 5))],
    3: ["Tea", math.floor(random.gauss(50, 5))],
    10: ["Contraband", math.floor(random.gauss(1000, 5))],
    5: ["Fruit", math.floor(random.gauss(10, 5))],
    6: ["Textiles", math.floor(random.gauss(40, 5))]
}
Run Code Online (Sandbox Code Playgroud)

我想将它打印出来,以便与标题很好地对齐.我可以将标题添加到字典中并始终确保它们排在最前面吗?我已经看到了几种垂直方式,但是我希望它的最大列宽接近max str()或int().

例:

Key_ _ __ _ __ _ Label _ __ _ __ _ ___ Number
1
_ __ _ __ _ ___ 香料_ __ _ _ _ _ _ _ 42
2
_ _ _ _ _ _ _ ___ 其他东西_ ____ _16

显然我甚至不能手动在这个编辑器里面做这个,但我希望这个想法能够实现.我也不是真的想要__.只是一个占位符.
谢谢大家.

python dictionary python-3.x

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

使用 SQLAlchemy 时 pandas.read_sql() 比 pyodbc 慢得多

我正在尝试从 SQL 读取一个小表,并且正在考虑从 pyodbc 切换到 SQLAlchemy 以便能够使用 pd.to_sql()

当我比较两者时,sql alchemy 慢得多。

s_py = """\
import pandas as pd
import pyodbc
cxn = pyodbc.connect('DRIVER={SQL SERVER};SERVER=.\;DATABASE=PPIS;UID=sa;PWD=pwd')
"""

s_alch = """\
import pandas as pd
import sqlalchemy
cxn = sqlalchemy.create_engine("mssql+pyodbc://sa:pwd@./PPIS?driver=SQL+Server")
"""
timeit.timeit('pd.read_sql("SELECT * FROM Operators", cxn)',setup=s_py, number=100)
Run Code Online (Sandbox Code Playgroud)

输出[21]:0.18496091418973037

timeit.timeit('pd.read_sql("SELECT * FROM Operators", cxn)',setup=s_alch, number=100)
Run Code Online (Sandbox Code Playgroud)

输出[23]:4.407356934717654

我见过这个谈论插入行。但为什么读取速度会慢很多呢?

python sqlalchemy pyodbc pandas

6
推荐指数
0
解决办法
2420
查看次数

R:从 GLMNet 获取 AIC/BIC/可能性

我想知道我是否可以从 GLMNet 获得 AIC 和 BIC。我发现 glmnet.cr 似乎能够做到,但我的反应是时间,而不是顺序。我可以根据可能性自己计算它,但 glmnet 也不会返回。

切线:我真的可以返回 l1norm 吗?我觉得它应该只是

fit$norm
Run Code Online (Sandbox Code Playgroud)

但似乎不是。(我知道它说不要把数字拉出来,但我实际上没有使用 R)

在此先感谢您的帮助。

statistics r glmnet

5
推荐指数
1
解决办法
5061
查看次数

model.frame.default(object, data, xlev = xlev) 中的错误:对象不是矩阵

R 已经 3 天了,不知道我做错了什么。我正在尝试将一些具有两种方式交互的列发送到 glmnet cox 模型中。我有一些名为 dtable 的 data.frame()

编辑以使代码可重现

xs<-c("Col1", "Col2", "Col3")
v<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, NA, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, NA, 25, 26, 27, 28, 29, 30)
df<-data.frame(matrix(v,ncol=3))
dm<-as.matrix(df)
dm<-matrix(dm[complete.cases(dm)], ncol=3)
colnames(dm)<-xs
dfdata<-data.frame(dm)
f<-as.formula(time~.*.)
xmatrix<-model.matrix(f, dfdata)[,-1]
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到错误

Error in model.frame.default(object, data, xlev = xlev) :    
object is not a matrix
Run Code Online (Sandbox Code Playgroud)

提前致谢

r glmnet model.matrix

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

使用可选参数和多个参数的可行性

只是想知道是否可以在同一个函数中使用可选参数作为多个参数.我环顾四周,觉得好像我的词汇错了或什么的.例:

def pprint(x, sub = False, *Headers):
  pass
Run Code Online (Sandbox Code Playgroud)

我是否可以使用多个标题来调用它而不必总是放入TrueFalse放入sub?我觉得这不是因为Headers不知道它从何处开始.我想明确声明,sub = True否则它默认为False.

python python-3.3

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

安全使用eval()或替代品 - python

我总是厌倦在任何语言中使用eval,但我想不出更好的方法来做两件事.从我读过的所有内容来看,evIl(这很糟糕).任何想法都表示赞赏.我有一个带字典的模块,可以调用函数或设置属性,具体取决于你从另一个模块调用它的方式

module Config
some_dict = {1: ["desc 1", "callfunction1()"], 
  2: ["desc2", "setattr(object, "attribute", "the fun things"]} 
Run Code Online (Sandbox Code Playgroud)

等等

module other
try:
  i = int(input())
  eval(Config.some_dict[i][1])
except ValueError:
  print("nope")
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有更安全的方法来做到这一点.
此外,如果我在程序运行时尝试调试:

try:
  eval(input())
except:
  pass
Run Code Online (Sandbox Code Playgroud)

这是可接受的还是pythonic还是有更好的方法?我是python的新手(我主要运行JSL所以一切都是用eval(parse())完成的.

python python-3.x

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