小编Pau*_*aul的帖子

使用None的NumPy数组切片

这让我抓了一会儿.我无意中使用None切片数组并获得错误以外的其他内容(我预计会出错).相反,它返回一个具有额外维度的数组.

>>> import numpy
>>> a = numpy.arange(4).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> a[None]
array([[[0, 1],
        [2, 3]]])
Run Code Online (Sandbox Code Playgroud)

这种行为是故意还是副作用?如果有意,是否有一些理由呢?

python arrays numpy

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

需要在SubPlots之间为X轴标签添加空间,可能会删除轴槽口的标签

希望在绘制的图形之间添加垂直空间以允许X轴标签显示:

每个图形都需要有空间来显示当天,目前最后两个图形是唯一显示的图形,因为图形与它重叠.

同样好奇的是,我是否真的可以删除X轴的凹口标签,用于周四/周五标记的图形,即底部X轴是唯一显示的图形.对于Y轴也是如此,但只有左侧的图表显示了比例.

*遗憾的是,由于我没有足够的代表,我无法发布图片来展示这一点.

代码段:

import mathlib.pyplot as pyplot
fig = pyplot.figure()
ax1 = fig.add_subplot(4,2,1)
ax1.set_yscale('log')
ax2 = fig.add_subplot(4,2,2, sharex=ax1, sharey=ax1)
ax3 = fig.add_subplot(4,2,3, sharex=ax2, sharey=ax2)
ax4 = fig.add_subplot(4,2,4, sharex=ax3, sharey=ax3)
ax5 = fig.add_subplot(4,2,5, sharex=ax4, sharey=ax4)
ax6 = fig.add_subplot(4,2,6, sharex=ax5, sharey=ax5)
ax7 = fig.add_subplot(4,2,7, sharex=ax6, sharey=ax6)
ax1.plot(no_dict["Saturday"],'k.-',label='Saturday')
ax1.set_xlabel('Saturday')
ax1.axis([0,24,0,10000])
pyplot.suptitle('Title')
pyplot.xlabel('Hour in 24 Hour Format')
ax2.plot(no_dict["Sunday"],'b.-',label='Sunday')
ax2.set_xlabel('Sunday')
...
Run Code Online (Sandbox Code Playgroud)

太拥挤

python matplotlib

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

如何在matplotlib/Python中直接将散点图叠加在jpg图像上?

我需要快速绘制jpg帧作为跟踪算法的输出结果.与jpg帧的伴侣是包含简单(x,y)数据的文本文件,其定位正被跟踪的图像目标.我想使用matplotlib绘制jpg图像,然后覆盖(x,y)数据的散点图,该数据从文本文件中读取并存储到Pythonic列表中.下面是将绘制jpg图像的代码,但在我所做的所有matplotlib,scipy和PIL手册和帮助页面的搜索中,我找不到任何解释如何维护此绘图窗口并简单地覆盖散点图图像中各个(x,y)位置的简单标记.任何帮助是极大的赞赏.

import matplotlib.pyplot as plt;
im = plt.imread(image_name);
implot = plt.imshow(im);
plt.show()
Run Code Online (Sandbox Code Playgroud)

python plot overlay image matplotlib

29
推荐指数
3
解决办法
7万
查看次数

PIL如何根据图像的大小缩放文本大小

我正在尝试动态缩放文本以放置在不同但已知尺寸的图像上.该文本将作为水印应用.有没有办法缩放与图像尺寸相关的文本?我不要求文本占据整个表面区域,只要足够可见,以便易于识别且难以移除.我正在使用Python Imaging Library 1.1.7版.在Linux上.

我希望能够设置文本大小与图像尺寸的比例,比如大小的1/10.

我一直在寻找字体大小属性来改变大小但我没有运气来创建算法来扩展它.我想知道是否有更好的方法.

有关如何实现这一目标的任何想法?

谢谢

python fonts scaling image-manipulation python-imaging-library

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

使用itertools.groupby性能进行Numpy分组

我有许多大型(> 35,000,000)整数列表,它们将包含重复项.我需要计算列表中每个整数的计数.以下代码有效,但似乎很慢.任何人都可以使用Python更好的基准测试,最好是Numpy吗?

def group():
    import numpy as np
    from itertools import groupby
    values = np.array(np.random.randint(0,1<<32,size=35000000),dtype='u4')
    values.sort()
    groups = ((k,len(list(g))) for k,g in groupby(values))
    index = np.fromiter(groups,dtype='u4,u2')

if __name__=='__main__':
    from timeit import Timer
    t = Timer("group()","from __main__ import group")
    print t.timeit(number=1)
Run Code Online (Sandbox Code Playgroud)

返回:

$ python bench.py 
111.377498865
Run Code Online (Sandbox Code Playgroud)

干杯!

根据回复进行编辑:

def group_original():
    import numpy as np
    from itertools import groupby
    values = np.array(np.random.randint(0,1<<32,size=35000000),dtype='u4')
    values.sort()
    groups = ((k,len(list(g))) for k,g in groupby(values))
    index = np.fromiter(groups,dtype='u4,u2')

def group_gnibbler():
    import numpy as np
    from …
Run Code Online (Sandbox Code Playgroud)

python algorithm numpy

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

在运行时拦截子进程的stdout

如果这是我的子流程:

import time, sys
for i in range(200):
    sys.stdout.write( 'reading %i\n'%i )
    time.sleep(.02)
Run Code Online (Sandbox Code Playgroud)

这是控制和修改子进程输出的脚本:

import subprocess, time, sys

print 'starting'

proc = subprocess.Popen(
    'c:/test_apps/testcr.py',
    shell=True,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE  )

print 'process created'

while True:
    #next_line = proc.communicate()[0]
    next_line = proc.stdout.readline()
    if next_line == '' and proc.poll() != None:
        break
    sys.stdout.write(next_line)
    sys.stdout.flush()

print 'done'
Run Code Online (Sandbox Code Playgroud)

为什么readlinecommunicate等待,直到程序完成后运行?有没有一种简单的方法来传递(和修改)子进程'stdout实时?

顺便说一下,我已经看过,但是我不需要记录功能(并且没有太多的了解它).

我在Windows XP上.

python subprocess stdout process popen

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

生成3D验证[图]

我想编写一个Python脚本来生成像这样的3D CAPTCHA: 茶袋验证码

我可以使用哪些图形库?

资料来源:ocr-research.org.ua

python graphics captcha

12
推荐指数
2
解决办法
2963
查看次数

Python中的单位转换

SymPy是在Python中进行单位转换的绝佳工具:

>>> from sympy.physics import units
>>> 12. * units.inch / units.m
0.304800000000000
Run Code Online (Sandbox Code Playgroud)

你可以轻松自己动手:

>>> units.BTU = 1055.05585 * units.J
>>> units.BTU
1055.05585*m**2*kg/s**2
Run Code Online (Sandbox Code Playgroud)

但是,我无法将此实现到我的应用程序中,除非我可以将度C(绝对值)转换为K到度数F到度数R或其任何组合.

我想也许这样的事情会起作用:

units.degC = <<somefunc of units.K>>
Run Code Online (Sandbox Code Playgroud)

但显然这是走错路.在SymPy中干净地实现"偏移"型单位转换的任何建议?

注意:我愿意尝试其他单元转换模块,但除了Unum之外不知道任何其他单元,并且发现它很麻烦.

编辑:好的,现在很清楚,我想要做的是首先确定要比较的两个量是否在同一个坐标系中.(如时间单位参考不同的时期或时区或dB到直线幅度),进行适当的变换,然后进行转换.有没有通用的坐标系管理工具?那太好了.

我会假设°F和°C总是指表达式中的Δ°FΔ°C,但是单独站立时指的是绝对值.我只是想知道是否有办法制作units.degF一个函数并property()在其上拍一个装饰器来处理这两个条件.

但是现在,我将设置units.C == units.K并尝试在文档中清楚地说明使用函数convertCtoK(...)convertFtoR(...)处理绝对单位时.(开个玩笑.不,我不会.)

python math symbolic-math sympy

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

Tukey在Python中的五个数字摘要

我无法在任何标准软件包中找到此函数,因此我编写了下面的一个.然而,在将它扔向Cheeseshop之前,有没有人知道已经发布的版本?或者,请提出任何改进建议.谢谢.

def fivenum(v):
    """Returns Tukey's five number summary (minimum, lower-hinge, median, upper-hinge, maximum) for the input vector, a list or array of numbers based on 1.5 times the interquartile distance"""
    import numpy as np
    from scipy.stats import scoreatpercentile
    try:
        np.sum(v)
    except TypeError:
        print('Error: you must provide a list or array of only numbers')
    q1 = scoreatpercentile(v,25)
    q3 = scoreatpercentile(v,75)
    iqd = q3-q1
    md = np.median(v)
    whisker = 1.5*iqd
    return np.min(v), md-whisker, md, md+whisker, np.max(v),
Run Code Online (Sandbox Code Playgroud)

python statistics numpy scipy

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

有效存储的字典.这个数据结构是否存在以及它的名称是什么?

我想要一个存储大量低熵数据的数据结构,这些数据通常彼此相似.我希望有效地存储它们(以某种方式压缩)并通过索引或匹配来检索它们.快速检索比压缩更重要,但不能将它们存储为未压缩的选项.

我能想到的最好的例子是存储从文本卷中获取的十亿个书面句子(在磁盘上以压缩形式).

dict:
1: 'The quick brown fox jumps over the lazy dog.'
2: 'The quick green frog jumps over the lazy fox.'
3: 'The quick brown fox jumps over the lazy frog.'
Run Code Online (Sandbox Code Playgroud)

如果两个句子相同,则它们应具有相同的索引.

我想通过索引或通配符匹配来检索它们(正则表达式也很好,但不是必需的).即:

dict.get(1) => 'The quick brown fox jumps over the lazy dog.'
dict.match('The quick brown *') => [1, 3]
Run Code Online (Sandbox Code Playgroud)

我可以压缩每个句子,但忽略了许多条目相似的事实.

我可以对它们进行排序并存储差异.但是添加和删除元素非常困难.

它应该支持unicode.

我确信那里有一些树形结构可以做到这一点.

如果它有一个python包装器,奖励积分.

这个https://hkn.eecs.berkeley.edu/~dyoo/python/suffix_trees/看起来非常接近但是从2002/py2.2开始就没有看到动作,我无法运行它.如果有更新/更好的选择退房,我很想听听他们.

我包含了bioinformatics标签,因为我知道在那里使用了suffix_trees和类似的数据结构.

python bioinformatics data-structures

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