小编mcs*_*her的帖子

使用matplotlib中的许多子图改进子图大小/间距

这个问题非常相似,但不同之处在于我的身材可以达到需要的大小.

我需要在matplotlib中生成一堆垂直堆叠的图.结果将使用figsave保存并在网页上查看,因此我不关心最终图像的高度,只要子图间隔开,这样它们就不会重叠.

无论我有多大的数字,子图总是似乎重叠.

我的代码目前看起来像

import matplotlib.pyplot as plt
import my_other_module

titles, x_lists, y_lists = my_other_module.get_data()

fig = plt.figure(figsize=(10,60))
for i, y_list in enumerate(y_lists):
    plt.subplot(len(titles), 1, i)
    plt.xlabel("Some X label")
    plt.ylabel("Some Y label")
    plt.title(titles[i])
    plt.plot(x_lists[i],y_list)
fig.savefig('out.png', dpi=100)
Run Code Online (Sandbox Code Playgroud)

python matplotlib

260
推荐指数
8
解决办法
32万
查看次数

使用函数中的单个项返回元组

刚刚在Python中遇到了一些奇怪的想法,我想 会把写成一个问题,以防万一其他人试图用同样的徒劳无益的搜索条件找到答案我是

看起来像元组解包使得它如果你期望迭代返回值就不能返回长度为1的元组.虽然看起来看起来很欺骗.看到答案.

>>> def returns_list_of_one(a):
...     return [a]
...
>>> def returns_tuple_of_one(a):
...     return (a)
...
>>> def returns_tuple_of_two(a):
...     return (a, a)
...
>>> for n in returns_list_of_one(10):
...    print n
...
10
>>> for n in returns_tuple_of_two(10):
...     print n
...
10
10
>>> for n in returns_tuple_of_one(10):
...     print n
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>
Run Code Online (Sandbox Code Playgroud)

python function return-value iterable-unpacking

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

列表理解,映射和numpy.vectorize性能

我有一个函数foo(i),它接受一个整数并花费大量的时间来执行.会不会有任何的初始化通过以下方式之间的显著性能差异:

a = [foo(i) for i in xrange(100)]

a = map(foo, range(100))

vfoo = numpy.vectorize(foo)
a = vfoo(range(100))
Run Code Online (Sandbox Code Playgroud)

(我不关心输出是列表还是numpy数组.)

有没有更好的办法?

python performance numpy list-comprehension

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

如何从大量数字中获取最大数字?

我想从至少1亿个数字列表中获取最大的100个元素.

我可以对整个列表进行排序,并从排序列表中获取最后100个元素,但就内存和时间而言,这将是非常昂贵的.

有没有现成的简单,pythonic方式这样做?

我想要的是跟随功能而不是纯粹的排序.其实我不想浪费时间来分类我不在乎的元素.

例如,这是我想要的功能:

getSortedElements(100, lambda x,y:cmp(x,y))
Run Code Online (Sandbox Code Playgroud)

请注意,此要求仅适用于性能视角.

python sorting max minimum

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

使用xlwt编写和格式化datetime.date对象

我在使用这段代码时遇到了一些麻烦

#data_list = some data
wb = xlwt.Workbook()
s = wb.add_sheet("Test Sheet")
for c, data in enumerate(data_list):
        xf=None
        if isinstance(data, datetime.time):
                xf = xlwt.easyxf(num_format_str='HH:MM:SS') #works
        elif isinstance(data, datetime.date):
                xf = xlwt.easyxf(num_format_str='MM/DD/YYYY') #doesn't work
        if xf:
                sheet.write(r+1,c,data, xf)
        else:
                sheet.write(r+1,c,data)
Run Code Online (Sandbox Code Playgroud)

在输出中,日期最初都显示为"#####".通过与每列中的单元格进行交互,我可以很好地格式化它们,但这很耗时.我尝试使用num_format_str一点点,但到目前为止没有运气.

python xlwt

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