我使用matplotlib制作散点图.散点图上的每个点都与命名对象相关联.当我将光标悬停在与该对象关联的散点图上的点上时,我希望能够看到对象的名称.特别是,能够快速查看异常点的名称会很好.我在这里搜索时能够找到的最接近的东西是annotate命令,但这似乎在图上创建了一个固定的标签.不幸的是,根据我拥有的点数,如果我标记了每个点,散点图将是不可读的.有没有人知道创建只在光标悬停在该点附近时出现的标签的方法?
我正在使用各种数据类型的numpy数组(uint8,uint16,int16等).我希望能够检查一个数字是否可以在给定数据类型的数组范围内表示.我想象的东西看起来像:
>>> im.dtype
dtype('uint16')
>>> dtype_max(im.dtype)
65535
>>> dtype_min(im.dtype)
0
Run Code Online (Sandbox Code Playgroud)
这样的事情存在吗?顺便说一句,我觉得之前已经有过这样的问题了,但我的搜索结果是空洞的,所有"类似的问题"似乎都是无关的.
编辑:当然,现在我已经问过,其中一个"相关"的问题确实有答案.哎呀.
我有一个setup.cfg文件,指定要使用的默认参数pytest.虽然这对于在我的整个包上运行测试很有用,但我希望能够setup.cfg在单个模块上运行测试时忽略这些选项.有没有办法轻松做到这一点?
我目前正在使用python中的标准多处理来生成一系列无限期运行的进程.我并不特别关心表现; 每个线程只是在观察文件系统上的不同更改,并在修改文件时采取适当的操作.
目前,我有一个适合我的需求的解决方案,适用于Linux.我有一个函数和参数的字典,如下所示:
job_dict['func1'] = {'target': func1, 'args': (args,)}
Run Code Online (Sandbox Code Playgroud)
对于每一个,我创建一个过程:
import multiprocessing
for k in job_dict.keys():
jobs[k] = multiprocessing.Process(target=job_dict[k]['target'],
args=job_dict[k]['args'])
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以跟踪每个正在运行的,并在必要时重新启动因任何原因崩溃的作业.
这在Windows中不起作用.我正在使用的许多函数都是包装器,使用各种functools函数,我得到的消息是无法序列化函数(请参阅多处理和dill可以一起做什么?).我还没弄清楚为什么我在Linux中没有得到这个错误,但在Windows中也是如此.
如果我dill在Windows中启动进程之前导入,则不会出现序列化错误.但是,这些过程实际上并没有做任何事情.我无法弄清楚为什么.
然后我切换到多处理实现pathos,但没有找到Process标准multiprocessing模块中的简单类的模拟.我能够使用每个作业生成线程pathos.pools.ThreadPool.这不是map的预期用途,我敢肯定,但它启动了所有线程,并且它们在Windows中运行:
import pathos
tp = pathos.pools.ThreadPool()
for k in job_dict.keys():
tp.uimap(job_dict[k]['target'], job_dict[k]['args'])
Run Code Online (Sandbox Code Playgroud)
但是,现在我不确定如何监视一个线程是否仍处于活动状态,我正在寻找这样,以便我可以重新启动由于某种原因崩溃的线程.有什么建议?
我可以列表的字符串表示转换到一个列表用ast.literal_eval.是否有一个numpy数组的等价物?
x = arange(4)
xs = str(x)
xs
'[0 1 2 3]'
# how do I convert xs back to an array
Run Code Online (Sandbox Code Playgroud)
使用ast.literal_eval(xs)加注a SyntaxError.如果需要,我可以进行字符串解析,但我认为可能有更好的解决方案.
我一直spatial.cKDTree在scipy用来计算点之间的距离.对于我的典型数据集,它总是运行得非常快(~1秒)(找到~1000点的距离到~1e6点的数组).
我在使用Ubuntu 14.10的计算机上运行python 2.7.6中的代码.直到今天早上,我已经管理了大多数python包apt-get,包括scipy和numpy.我想了最新版本的几包了,所以我决定安装包/usr/lib/python2.7/通过apt-get,并重新安装了所有软件包pip install(照顾的scipy依赖就像liblapack-dev有apt-get必要时).一切都安装好,可以导入而没有问题.
import scipy
import cython
scipy.__version__
'0.16.0'
cython.__version__
'0.22.1'
Run Code Online (Sandbox Code Playgroud)
现在,spatial.cKDTree在相同大小的数据集上运行的速度非常慢.我看到运行时间约为500秒而不是~1秒.我无法弄清楚发生了什么.
关于我在安装使用pip而不是使用它时可能做了什么的任何建议apt-get都会导致scipy.spatial.cKDTree运行速度如此之慢?
python ×6
numpy ×2
dill ×1
matplotlib ×1
pathos ×1
performance ×1
pickle ×1
pytest ×1
scipy ×1