小编Noa*_*oah的帖子

具有小数精度的分数

是否有一个纯粹的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 decimal arbitrary-precision long-integer

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

在python中获取正确时间的简便方法

我在群集上运行一些作业,每个节点上的日期彼此略微偏离.有没有一种简单的方法可以通过python从互联网上的某个地方获取时间,还是我需要让sysadmin更频繁地同步机器之间的时间?

我想在我发布的每个作业的输出中加上时间戳,但很明显,python time.strftime()等的准确性将取决于机器知道正确的时间.我会在几秒钟内爱上精确度,但现在它只需几分钟.

python datetime

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

使用索引编辑pandas DataFrame

是否有一种通用,有效的方法将值分配给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)

python pandas

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

添加具有约束布局的外部边距?

生成图形以保存到 pdf 文件时,我想调整图形相对于页面边缘的位置,例如沿所有边添加英寸边距。据我所知,这样做的解决方案(例如,在这个问题中)要么:

  1. 不使用constrained_layout模式 -plt.subplots_adjust()在创建图形之后但在fig.savefig()弄乱受约束的布局之前应用
  2. 实际上不要定量地调整图形的位置——添加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)

python matplotlib

6
推荐指数
2
解决办法
477
查看次数

sqlalchemy 中的锁定

我对如何同时从多个不同进程修改表感到困惑。我尝试过使用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 sql locking sqlalchemy

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

更改熊猫的默认选项

我想知道是否有任何方法可以更改熊猫的默认显示选项。我想在每次运行python时更改显示格式以及显示宽度,例如:

pandas.options.display.width = 150
Run Code Online (Sandbox Code Playgroud)

我看到默认值是在中硬编码的pandas.core.config_init。熊猫有办法正确地做到这一点吗?或者,如果没有,是否有某种方法可以设置ipython至少在每次导入熊猫时更改配置?我唯一能想到的就是制作自己的mypandas库,该库用每次加载时发出的一些额外命令包装大熊猫。还有更好的主意吗?

python configuration ipython pandas

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

以编程方式将纯文本转换为乳胶代码

我想要一些用户输入文本并快速解析它以生成一些乳胶代码.目前,我更换%\%\n\n\n,但如果有其他的替代品,我应该就取得从纯文本到乳胶转换我不知道.

我不是非常担心这里的安全性(你甚至可以编写恶意乳胶代码吗?),因为这只应该被用户用来将他们自己的文本转换成乳胶,所以他们应该被允许使用他们自己的乳胶标记在预转换的文本中,但我想确保输出不包括偶然的乳胶命令,如果可能的话.如果有一个很好的库来进行这样的转换,我会看看.

cocoa latex

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

Pandas Dataframe - 在A列中的每个标签上找到B列的总和

让我们说我们有以下数据:

...    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)

有没有一种简单的方法来使用熊猫做同样的事情?

python multiple-entries pandas

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

熊猫0.19.2 read_excel IndexError:列表索引超出范围

我想解析一个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)

python excel pandas

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

如何定位字幕?

我试图在suptitle多面板图形上方进行调整,但在弄清楚如何调整figsize字体并随后放置字幕时遇到了麻烦。

问题在于调用plt.suptitle("my title", y=...)调整字幕的位置也会调整图形尺寸。几个问题:

  1. suptitle(..., y=1.1)标题实际放在哪里?据我所知,ysuptitle参数的文档指向matplotlib.text.Text,但是当您有多个子图时,我不知道图形坐标的含义。

  2. 什么是对数字的大小指定时的效果ysuptitle

  3. 如何手动调整图形尺寸和间距(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 matplotlib

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