小编qua*_*ash的帖子

如何让virtualenv在Ubuntu上使用dist-packages?

我知道virtualenv,如果--no-site-packages在创建新的虚拟环境时没有传递参数,将链接/usr/local/lib/python2.7/site-packages(对于Python 2.7)的包与新创建的虚拟环境.在Ubuntu 12.04 LTS上,我有三个可以安装Python 2.7软件包的位置(使用默认的,Ubuntu提供的Python 2.7安装):

  1. /usr/lib/python2.7/dist-packages:这有我的全局安装ipython,scipy,numpy,matplotlib - 如果它们不能通过scipy堆栈获得,我会发现单独安装(以及它们的所有依赖)会很困难和耗时.
  2. /usr/local/lib/python2.7/site-packages:这是空的,我认为它将在Ubuntu上保持这种方式,除非我从源代码安装包.
  3. /usr/local/lib/python2.7/dist-packages:这对天文学有非常重要的本地包装,特别是与PyRAF,STScI等相关的包装,单独安装非常困难和耗时.

请注意,/usr/lib/python2.7/site-packages我的系统上不存在全局目录.另请注意,我的ipython,scipy等全局安装让我可以即时使用这些软件包,而无需每次都使用/激活虚拟环境.

当然,我现在想使用virtualenv在我的用户主目录中创建一个虚拟环境,我将为未来的项目提供/激活.但是,我希望这个虚拟环境在创建时链接/复制上面列表中位置(1)和(3)中的所有包.这样做的主要原因是我不想经历这个pip install过程(如果可能的话)为这个(也许是其他的)虚拟环境重新安装ipython,scipy,astro-packages等.

这是我的问题:

  1. 有没有办法让我指定virtualenv我希望它将这两个dist-packages目录中的包链接/复制到将来创建的虚拟环境中?
  2. 当我最终在两个dist-packages目录中更新我的scipy,ipython等全局安装时,这还会更新/更改我的虚拟环境使用的软件包(以及它在virtualenv创建期间最初获得的软件包)吗?
  3. 如果我在Ubuntu上从源代码安装软件包,它会进入/usr/local/lib/python2.7/dist-packages,还是/usr/local/lib/python2.7/site-packages

在此先感谢您的帮助!

python environment ubuntu packages virtualenv

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

Python 中的阈值直方图——强制每个 bin 至少有 N 个对象

在使用 Numpy.histogram 或 matplotlib.pyplot.hist 创建的典型直方图中,箱具有统一的宽度或用户指定他/她自己的箱边缘。关于最佳 bin 宽度有很多选择——比如 sqrt(样本大小)。

有时,有一些箱内有零个对象——例如,在直方图的极值处。如果想要寻找相关性,这可能会很痛苦——例如,如果您想要检查每个容器中的对象数量是否随着 x 轴上的数量增加而增加。(想象一个直方图,其中几乎所有其他 bin 实际上都有 0 个对象,或者一个直方图中第一个和最后一个 bin 实际上有 0 个对象 - 这两种情况都会导致数据可视化效果不佳,并且更难以看到任何潜在的相关性。 )

在这种情况下,对分箱施加阈值以使每个分箱包含至少N 个对象可能是有益的。当然,bin 宽度可能不再统一。

有没有一种简单的方法(即内置函数)可以使用 Numpy、Scipy 或 matplotlib 在 Python 中创建这样的“阈值直方图”?或者至少分割一个单调的数字数组,使得每个子数组至少包含 N 个数字?

此外,这种分箱算法是否被认为是最佳的(因为生成的直方图可以让您更平滑地可视化数据的位置),还是次优的(因为您正在根据自己的优势操纵分箱,而不仅仅是显示数据)数据原样)?

python numpy histogram binning threshold

5
推荐指数
0
解决办法
942
查看次数

scipy.ndimage.interpolation.rotate后的旋转图像坐标?

我有一个numpy数组用于从FITS文件读入的图像.我用它旋转了N度scipy.ndimage.interpolation.rotate.然后我想弄清楚原始非旋转帧中的某些点(x,y)在旋转图像中的最终位置 - 即,旋转的帧坐标(x',y')是什么?

这应该是一个非常简单的旋转矩阵问题,但如果我使用通常的基于数学或编程的旋转方程,则新的(x',y')不会最终到达它们原来的位置.我怀疑这与需要翻译矩阵有关,因为scipy旋转函数基于原点(0,0)而不是图像数组的实际中心.

有人可以告诉我如何获得旋转的帧(x',y')?例如,你可以使用

from scipy import misc
from scipy.ndimage import rotate
data_orig = misc.face()
data_rot = rotate(data_orig,66) # data array
x0,y0 = 580,300 # left eye; (xrot,yrot) should point there
Run Code Online (Sandbox Code Playgroud)

PS以下两个相关问题的答案对我没有帮助:

python numpy matplotlib rotation scipy

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

将4个一对一映射列表转换为dicts列表(python)

我有4个列表,其中元素是一对一映射的.有成千上万的元素.我想创建一个dict,为每个元素提供4个属性,然后我想将这些dicts放入列表中.(我的最终目标是创建一个pandas DataFrame并将其另存为HDF5文件.)

是否有一种简单的内存效率方法来执行此操作,可能使用zip()和dict()而不是for循环?

作为Python的工作示例,请考虑:

list1 = ['obj1','obj2','obj3']
list2 = ['cat','dog','tree']
list3 = [7,8,9]
list4 = ['red','green','blue']
Run Code Online (Sandbox Code Playgroud)

所以我的想法是,最后我想要一个看起来像的dicts列表

[{'obj':'obj1','type':'cat','num':7,'color':'red'}, 
 {'obj':'obj2','type':'dog','num':8,'color':'green'}, 
 {'obj':'obj3','type':'tree','num':9,'color':'blue'}]
Run Code Online (Sandbox Code Playgroud)

python dictionary numpy dataframe pandas

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

给定 log10 平均值和 log10 标准差,获取对数正态随机数

我得到了对数正态分布的 log10 均值和 log10 标准差。我想从这个对数正态分布中获得一个随机数。

即使该函数的输入是底层正态分布的平均值和标准(我没有),这可以用 numpy.random.lognormal 来完成吗?

另外,我从函数返回的随机数是 log10、自然对数还是常规数?

python numpy logarithm normal-distribution scipy

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