是否有一个纯粹的python实现fractions.Fraction支持longs作为分子和分母?不幸的是,取幂似乎被编码为返回浮点数(ack !!!),这应该至少支持使用decimal.Decimal.
如果没有,我想我可以制作一个库的副本,并尝试float()用适当的东西替换出现的东西,Decimal但我宁愿以前经过别人测试的东西.
这是一个代码示例:
base = Fraction.from_decimal(Decimal(1).exp())
a = Fraction(69885L, 53L)
x = Fraction(9L, 10L)
print base**(-a*x), type(base**(-a*x))
Run Code Online (Sandbox Code Playgroud)
结果0.0 <type 'float'>是答案应该是一个非常小的小数.
更新:我现在有以下解决方法(假设,对于**b,两者都是分数;当然,当exp_是浮点数或者本身是十进制时,我还需要另一个函数):
def fracpow(base, exp_):
base = Decimal(base.numerator)/Decimal(base.denominator)
exp_ = Decimal(exp_.numerator)/Decimal(exp_.denominator)
return base**exp_
Run Code Online (Sandbox Code Playgroud)
给出了答案4.08569925773896097019795484811E-516.
如果没有额外的功能有更好的方法,我仍然会感兴趣(我猜测如果我在Fraction课堂上工作得足够多,我会发现其他花车正在进入我的结果).
我在群集上运行一些作业,每个节点上的日期彼此略微偏离.有没有一种简单的方法可以通过python从互联网上的某个地方获取时间,还是我需要让sysadmin更频繁地同步机器之间的时间?
我想在我发布的每个作业的输出中加上时间戳,但很明显,python time.strftime()等的准确性将取决于机器知道正确的时间.我会在几秒钟内爱上精确度,但现在它只需几分钟.
是否有一种通用,有效的方法将值分配给pandas中的DataFrame子集?我有数百个行和列,我可以直接访问,但我没有设法弄清楚如何编辑他们的值而不迭代每一行,col对.例如:
In [1]: import pandas, numpy
In [2]: array = numpy.arange(30).reshape(3,10)
In [3]: df = pandas.DataFrame(array, index=list("ABC"))
In [4]: df
Out[4]:
0 1 2 3 4 5 6 7 8 9
A 0 1 2 3 4 5 6 7 8 9
B 10 11 12 13 14 15 16 17 18 19
C 20 21 22 23 24 25 26 27 28 29
In [5]: rows = ['A','C']
In [6]: columns = [1,4,7]
In [7]: df[columns].ix[rows]
Out[7]:
1 4 …Run Code Online (Sandbox Code Playgroud) 生成图形以保存到 pdf 文件时,我想调整图形相对于页面边缘的位置,例如沿所有边添加英寸边距。据我所知,这样做的解决方案(例如,在这个问题中)要么:
constrained_layout模式 -plt.subplots_adjust()在创建图形之后但在fig.savefig()弄乱受约束的布局之前应用bbox_inches="tight"或pad=-1似乎没有做任何有意义的事情有没有一种直接的方法来调整受限布局图形的外部边距?
例如:
fig = plt.figure(constrained_layout=True, figsize=(11, 8.5))
page_grid = gridspec.GridSpec(nrows=2, ncols=1, figure=fig)
# this doesn't appear to do anything with constrained_layout=True
page_grid.update(left=0.2, right=0.8, bottom=0.2, top=0.8)
top_row_grid = gridspec.GridSpecFromSubplotSpec(1, 3, subplot_spec=page_grid[0])
for i in range(3):
ax = fig.add_subplot(top_row_grid[:, i], aspect="equal")
n_bottom_row_plots = 10
qc_grid = gridspec.GridSpecFromSubplotSpec(1, n_bottom_row_plots, subplot_spec=page_grid[1])
for i, metric in enumerate(range(n_bottom_row_plots)):
ax = fig.add_subplot(qc_grid[:, i])
plt.plot(np.arange(5), np.arange(5))
fig.suptitle("my big label", fontweight="bold", …Run Code Online (Sandbox Code Playgroud) 我对如何同时从多个不同进程修改表感到困惑。我尝试过使用Query.with_lockmode(),但它似乎没有达到我期望的效果,这将防止两个进程同时查询相同的行。这是我尝试过的:
import time
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import *
engine = create_engine('mysql://...?charset=utf8&use_unicode=0', pool_recycle=3600, echo=False)
Base = declarative_base(bind=engine)
session = scoped_session(sessionmaker(engine))
class Test(Base):
__tablename__ = "TESTXYZ"
id = Column(Integer, primary_key=True)
x = Column(Integer)
def keepUpdating():
test = session.query(Test).filter(Test.id==1).with_lockmode("update").one()
for counter in range(5):
test.x += 10
print test.x
time.sleep(2)
session.commit()
keepUpdating()
Run Code Online (Sandbox Code Playgroud)
如果我同时运行这个脚本两次,我会得到session.query(Test).filter(Test.id==1).one().x50,而不是 100(假设一开始就是 0),这正是我所希望的。如何让两个进程同时更新值或让第二个进程等待第一个进程完成?
我想知道是否有任何方法可以更改熊猫的默认显示选项。我想在每次运行python时更改显示格式以及显示宽度,例如:
pandas.options.display.width = 150
Run Code Online (Sandbox Code Playgroud)
我看到默认值是在中硬编码的pandas.core.config_init。熊猫有办法正确地做到这一点吗?或者,如果没有,是否有某种方法可以设置ipython至少在每次导入熊猫时更改配置?我唯一能想到的就是制作自己的mypandas库,该库用每次加载时发出的一些额外命令包装大熊猫。还有更好的主意吗?
我想要一些用户输入文本并快速解析它以生成一些乳胶代码.目前,我更换%同\%和\n同\n\n,但如果有其他的替代品,我应该就取得从纯文本到乳胶转换我不知道.
我不是非常担心这里的安全性(你甚至可以编写恶意乳胶代码吗?),因为这只应该被用户用来将他们自己的文本转换成乳胶,所以他们应该被允许使用他们自己的乳胶标记在预转换的文本中,但我想确保输出不包括偶然的乳胶命令,如果可能的话.如果有一个很好的库来进行这样的转换,我会看看.
让我们说我们有以下数据:
... col1 col2 col3
0 A 1 info
1 A 2 other
2 B 3 blabla
Run Code Online (Sandbox Code Playgroud)
我想使用python pandas来查找重复的条目(在第1列中)并根据第2列添加它们.
在python中,我会做类似以下的事情:
l = [('A',1), ('A',2), ('B',3)]
d = {}
for i in l:
if(i[0] not in d.keys()):
d[i[0]]=i[1]
else:
d[i[0]]=d[i[0]]+i[1]
print(d)
Run Code Online (Sandbox Code Playgroud)
结果将是:
{'A': 3, 'B': 3}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来使用熊猫做同样的事情?
我想解析一个Excel电子表格。我决定使用熊猫,但立即被错误发现。
我从下面的代码开始,但是使用了完整路径并尝试设置工作表名称。
import pandas as pd
table = pd.read_excel('ss_12.xlsx')
if __name__ == '__main__':
pass
Run Code Online (Sandbox Code Playgroud)
excel电子表格与我的脚本文件位于同一目录中。从这个意义上讲,我教过它与open()相同,只是在同一个目录中需要一个名称。我在网上看了一些例子,按他们的说法应该可以。
我正在尝试删除上图中的第一列。完整错误(不确定如何格式化,抱歉)
C:\xx\Playpen\ConfigList_V1_0.xlsx
Traceback (most recent call last):
File "C:\xx\Playpen\getConVars.py", line 12, in <module>
pd.read_excel(excelFile)
File "C:\xx\Programs\Python\Python35\lib\site-packages\pandas\io\excel.py", line 200, in read_excel
**kwds)
File "C:\xx\Programs\Python\Python35\lib\site-packages\pandas\io\excel.py", line 432, in _parse_excel
sheet = self.book.sheet_by_index(asheetname)
File "C:\xx\Programs\Python\Python35\lib\site-packages\xlrd\book.py", line 432, in sheet_by_index
return self._sheet_list[sheetx] or self.get_sheet(sheetx)
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud) 我试图在suptitle多面板图形上方进行调整,但在弄清楚如何调整figsize字体并随后放置字幕时遇到了麻烦。
问题在于调用plt.suptitle("my title", y=...)调整字幕的位置也会调整图形尺寸。几个问题:
suptitle(..., y=1.1)标题实际放在哪里?据我所知,ysuptitle参数的文档指向matplotlib.text.Text,但是当您有多个子图时,我不知道图形坐标的含义。
什么是对数字的大小指定时的效果y来suptitle?
如何手动调整图形尺寸和间距(subplots_adjust?),以在每个面板中添加图形标题和整个图形的字幕,同时保持图形中每个斧头的大小?
一个例子:
data = np.random.random(size=100)
f, a = plt.subplots(2, 2, figsize=(10, 5))
a[0,0].plot(data)
a[0,0].set_title("this is a really long title\n"*2)
a[0,1].plot(data)
a[1,1].plot(data)
plt.suptitle("a big long suptitle that runs into the title\n"*2, y=1.05);
Run Code Online (Sandbox Code Playgroud)
显然,我每次做一个图形时都可以进行调整,但是我需要一个通常不需要人工干预就能解决的解决方案。我已经尝试过受限布局和紧凑布局。都无法可靠地处理任何复杂的图形。
python ×9
pandas ×4
matplotlib ×2
cocoa ×1
datetime ×1
decimal ×1
excel ×1
ipython ×1
latex ×1
locking ×1
long-integer ×1
sql ×1
sqlalchemy ×1