小编jse*_*old的帖子

为什么我的colorbar中有线条?

编辑:由于这似乎是一个受欢迎的帖子,这里的解决方案似乎对我有用.谢谢@gazzar和@mfra.

cbar.solids.set_rasterized(True)
cbar.solids.set_edgecolor("face")
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我的colorbar看起来像是哪条线?或者更确切地说为什么颜色过渡不平滑?显然,我正在使用底图,但这并不重要,因为它是引擎盖AFAICT下的所有matplotlib调用.我创建地图做类似的事情

grays = plt.cm.get_cmap("Grays")
sc = mymap.scatter(xpoints, ypoints, s=sizes, c=color_values, cmap=grays, alpha=.75,
                   marker="o", zorder=10, vmin=0, vmax=1)
cbar = mymap.colorbar(sc, drawedges=True, location="bottom")
Run Code Online (Sandbox Code Playgroud)

我试过没有和没有alpha,结果是一样的.也许是因为我的color_values数组不够好?我可以在某处设置映射到颜色条的基础值吗?我不知道怎么样,我在其他地方看不到这个问题.也就是说,我可以复制matplotlib show_colorbars示例而不会出现此问题.

坏颜色栏示例

python matplotlib matplotlib-basemap

41
推荐指数
4
解决办法
7717
查看次数

设置函数的python递归限制

我有一个解决递归问题的解决方案,我需要一个函数(实际上是一个方法).我希望它是递归的,但是我想将递归限制设置为10并在调用函数后重置它(或者根本没有使用递归限制).任何人都可以想到一个更好的方法来做这个或建议使用其中一个吗?我倾向于上下文管理器,因为它保持我的代码更清洁,没有设置tracebacklimit,但可能有警告?

import sys

def func(i=1):
    print i
    if i > 10:
        import sys
        sys.tracebacklimit = 1
        raise ValueError("Recursion Limit")
    i += 1
    func(i)

class recursion_limit(object):
    def __init__(self, val):
        self.val = val
        self.old_val = sys.getrecursionlimit()
    def __enter__(self):
        sys.setrecursionlimit(self.val)
    def __exit__(self, *args):
        sys.setrecursionlimit(self.old_val)
        raise ValueError("Recursion Limit")

def func2(i=1):
    """
    Call as

    with recursion_limit(12):
        func2()
    """
    print i
    i += 1
    func2(i)

if __name__ == "__main__":
    #    print 'Running func1'
    #    func()

    with recursion_limit(12):
        func2()
Run Code Online (Sandbox Code Playgroud)

我确实通过上下文管理器看到了一些奇怪的行为.如果我放入主要

with recursion_limit(12):
    func2()
Run Code Online (Sandbox Code Playgroud)

它打印1到10.如果我从解释器那样做它打印1到11.我认为当我导入东西时,引擎盖下有什么东西?

编辑:对于后人来说,这是我想出的一个知道其调用深度的函数.我怀疑我会在任何生产代码中使用它,但它完成了工作.

import sys …
Run Code Online (Sandbox Code Playgroud)

python recursion

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

这里的舍入错误的本质是什么?

有人可以帮我解开引擎盖下的确切内容吗?

>>> 1e16 + 1.
1e+16
>>> 1e16 + 1.1
1.0000000000000002e+16
Run Code Online (Sandbox Code Playgroud)

我使用的是64位Python 2.7.对于第一个,我会假设因为浮点数只有15的精度,所以它只是四舍五入的错误.真正的浮点答案可能是这样的

10000000000000000.999999....
Run Code Online (Sandbox Code Playgroud)

小数只是被削减了.但第二个结果让我质疑这种理解,不能完全代表?有什么想法吗?

[ 编辑:只是澄清一下.我并不以任何方式暗示答案是"错误的".显然,他们是对的,因为他们是.我只是想了解原因.]

python floating-point

11
推荐指数
2
解决办法
753
查看次数

使用xpath选择一个接一个的元素

我见过类似的问题,但我见过的解决方案不适用于以下内容.我远非XPath专家.我只需要解析一些HTML.如何选择Header 2后面的表格.我认为下面的解决方案应该可行,但显然不行.有人可以帮我从这里出去吗?

content = """<div>
<p><b>Header 1</b></p>
<p><b>Header 2</b><br></p>
<table>
<tr>
    <td>Something</td>
</tr>
</table>
</div>
"""

from lxml import etree
tree = etree.HTML(content)
tree.xpath("//table/following::p/b[text()='Header 2']")
Run Code Online (Sandbox Code Playgroud)

xpath lxml

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

在python中使用块大小序列的石斑鱼?

我有一个生成器,我想在两个级别迭代.第一级是不均匀的间隔,然后我想将下一级别分成5组,比方说.我需要它以节省内存并处理生成器输入,所以我正在做类似以下的事情.我不得不认为可能有更好的方法吗?特别是,我不希望在不均匀的长度结果中跟踪Nones.

import itertools

def dynamic_grouper(iterable, intervals):
    for i in intervals:
        inner_iter = list(itertools.islice(iterable, i)) # this is a "group"
        yield inner_iter

iterable = iter(xrange(100))
chunk_sizes = [22,30,38,10]

for i,group in enumerate(dynamic_grouper(iterable, chunk_sizes)):
    args = [iter(group)] * 5
    for item in itertools.izip_longest(fillvalue=None, *args):
        print "Group %i" % i
        print "Items %s" % list(item)
Run Code Online (Sandbox Code Playgroud)

python python-itertools

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

teradatasql:运行时/cgo:无法获得 pthread_keys

当我尝试从 sqlalchemy df=pd.read_sql_table(table, con, schema) 读取数据时出现运行时错误:

运行时间/ CGO:无法获得pthread_keys试图0x115 0x116 0x117量0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120的0x121 0x122 0x123的量0x124 0x125 0x126 0x127量0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f量0x130 0x131 0x132 0x133量0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 0x141 0x142 0x143量0x144 0x145 0x146 0x147 0x148 0x149 0x14a 0x14b 0x14c 0x14d 0x14e 0x14f量0x150 0x151 0x152 0x153量0x154 0x155 0x156 0x157 0x158 0x159 0x15a 0x15b 0x15c 0x15d 0x15e 0x15f 0x160 0x161 0x162 0x163 0x164 0x165 0x166 …

python sqlalchemy teradata pandas

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

在没有S-Plus的情况下阅读S-Plus数据库?

我有一个来自S-Plus 的旧的(~1995).Data数据库目录.无论如何,我可以在不使用S-Plus的情况下恢复其中包含的一些对象,可能还有R?

r s-plus

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

如何使用statsmodels拟合ARMAX模型

如何使用statsmodels ARMA过程来拟合表单的差分方程.

y[k] = - a1 * y[k-1] + b0 * u[k] + b1 * u[k-1] + c0 * e[k] + c1 * e[k-1]
Run Code Online (Sandbox Code Playgroud)

我不知道如何设置exog矩阵.例如

import statsmodels.api as sm
# some stupid data

y = np.random.randn(100)
u = np.ones((100,2))
armax = sm.tsa.ARMA(y, order=(1, 1), exog=u).fit()
Run Code Online (Sandbox Code Playgroud)

结果是

ValueError: could not broadcast input array from shape (2) into shape (3)
Run Code Online (Sandbox Code Playgroud)

它可能很容易解决,但我是该领域的新手.

谢谢.

(我正在使用statsmodels 0.6)

python statsmodels

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

python字符串格式化固定宽度

我想把一堆浮点数放入固定宽度的表中.也就是说,我希望最多使用12个字符.我想要使​​用至少10个小数(如果可用); 但是,如果10位小数使得它占用超过12个字符,则为圆形.我最初的想法是尝试这样的事情

# I only want 12 characters used total

num1 = 0.04154721841
num2 = 10.04154721841

# not what I want
print "{:<12.11g}".format((num1))
# what I want
print "{:<12.10f}".format((num1))

# not what I want
print "{:<12.10f}".format((num2))
# what I want
print "{:<12.11g}".format((num2))
Run Code Online (Sandbox Code Playgroud)

必须有一种方法来实现这一点,而无需编写函数来检查每个数字并根据上述条件给出格式.我错过了什么?

python string formatting

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