小编Gab*_*iel的帖子

计时器显示消极时间已过

我正在使用一个非常简单的代码来为for语句中的每个循环计时.它看起来像这样:

import time

for item in list_of_files:

    # Start timing this loop.
    start = time.clock()

    # Do a bunch of stuff.

    # Get time elapsed in seconds.
    elapsed = time.clock() - start

    # Get minutes and seconds.
    m, s = divmod(elapsed, 60)

    # Print result.
    print 'End of analysis for %s in %dm %02ds.\n'% (item, m, s)
Run Code Online (Sandbox Code Playgroud)

这大部分时间会产生正确的输出,9m 52s但有时会出现大的循环(需要一些时间),我会得到负面结果-53m 17s.

我无法确定一个明确的限制,其中结果开始显示为负值,但它显然只发生在> 20分钟的经过时间,但不是每个花费超过20分钟的循环(即:它不一致).

我的代码中有什么东西可以计算导致这种情况的每个循环吗?

我正在使用Spyder我的IDE.我比较了time.clock()表现得如何time.time(),这就是我所看到的:

>>> …
Run Code Online (Sandbox Code Playgroud)

python time

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

加快内核估算的采样速度

这是MWE我正在使用的更大的代码.基本上,它针对位于特定阈值以下的所有值对KDE(内核密度估计)执行蒙特卡洛积分(在该问题上建议积分方法BTW:积分2D核密度估计).

import numpy as np
from scipy import stats
import time

# Generate some random two-dimensional data:
def measure(n):
    "Measurement model, return two coupled measurements."
    m1 = np.random.normal(size=n)
    m2 = np.random.normal(scale=0.5, size=n)
    return m1+m2, m1-m2

# Get data.
m1, m2 = measure(20000)
# Define limits.
xmin = m1.min()
xmax = m1.max()
ymin = m2.min()
ymax = m2.max()

# Perform a kernel density estimate on the data.
x, y = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
values = np.vstack([m1, …
Run Code Online (Sandbox Code Playgroud)

python performance numpy montecarlo

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

获取字典的名称

我发现自己需要迭代一个由字典组成的列表,我需要,每次迭代,我正在迭代的字典的名称.

这是一个MWE(这个例子的内容与这个例子无关):

dict1 = {...}
dicta = {...}
dict666 = {...}

dict_list = [dict1, dicta, dict666]

for dc in dict_list:
    # Insert command that should replace ???
    print 'The name of the dictionary is: ', ???
Run Code Online (Sandbox Code Playgroud)

如果我只是dc在哪里使用???,它将打印字典的全部内容.如何获取正在使用的字典的名称?

python dictionary

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

卷积中的伪像

我使用直接卷积算法来计算此图像之间的卷积:

在此输入图像描述

而这个内核:

在此输入图像描述

我正在使用astropy实现直接卷积.

这导致以下卷积,将所有设置(包括边界处理)保留为默认值,即astropy.convolution.convolve(image,kernel):

在此输入图像描述

这个卷积有一些令人费解的文物.特别地,在距边缘约50个像素的偏移处存在"正方形"图案.在我看来,这是由于内核的程度; 即使内核大小正式为249x249,大多数信息显然都包含在大约100个像素的半径内 - 这意味着当内核应用于边缘时,我们可能会遇到麻烦.

这让我想到了我的问题:

  1. 这个假设是否正确 - 它确实是一个边缘问题?
  2. 我该如何解决这个问题?我不知道如何证明使用不同的边缘处理(零填充,插值,包装......)我确定不同的情况需要不同的解决方案,但我不知道如何决定这个...
  3. 只是...试图理解使用直接算法和FFT卷积之间的区别.如果内核和图像大小相同,FT卷积不需要零填充,则不会出现边缘效应.对于直接方法,您将无意中进行一些边缘处理......那么结果是否相等?因为原则上他们的表现应该不同,对吗?

python fft convolution astropy

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

scipy linregress功能错误的标准错误返回?

我有一个奇怪的情况与scipy.stats.linregress似乎返回一个不正确的标准错误:

from scipy import stats
x = [5.05, 6.75, 3.21, 2.66]
y = [1.65, 26.5, -5.93, 7.96]
gradient, intercept, r_value, p_value, std_err = stats.linregress(x,y)
>>> gradient
5.3935773611970186
>>> intercept
-16.281127993087829
>>> r_value
0.72443514211849758
>>> r_value**2
0.52480627513624778
>>> std_err
3.6290901222878866
Run Code Online (Sandbox Code Playgroud)

Excel返回以下内容:

 slope: 5.394

 intercept: -16.281

 rsq: 0.525

 steyX: 11.696
Run Code Online (Sandbox Code Playgroud)

steyX是excel的标准误差函数,返回11.696而不是scipy的3.63.谁知道这里发生了什么?在python中获得回归的标准错误的任何替代方法,而不是去Rpy

python regression scipy

7
推荐指数
2
解决办法
3658
查看次数

gnuplot,如何只标记某些点?

我正在使用以下gnuplot命令创建一个图:

#!/bin/bash
gnuplot << 'EOF'
set term postscript portrait color enhanced
set output 'out.ps'

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? $1:'aaa') w labels

EOF
Run Code Online (Sandbox Code Playgroud)

这里data_file看起来是这样的:

  O4     -1.20     -0.33     -5.20  
O9.5     -1.10     -0.30     -3.60  
  B0     -1.08     -0.30     -3.25  
B0.5     -1.00     -0.28     -2.60  
B1.5     -0.90     -0.25     -2.10  
B2.5     -0.80     -0.22     -1.50  
  B3     -0.69     -0.20     -1.10  
Run Code Online (Sandbox Code Playgroud)

我希望gnuplot 用列中找到的字符串标记所有1,除了4等于-3.60的那个点,在这种情况下我想要aaa字符串.什么我得到的是,$4=-3.60数据点被正确标记为aaa,但其余的没有被标记 …

conditional gnuplot labels

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

ImportError numpy/core/multiarray.so:undefined symbol:PyUnicodeUCS2_AsASCIIString

当我运行django项目时,我遇到了一个奇怪的问题:

ImportError: /usr/local/lib/python2.7/site-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS2_AsASCIIString
Run Code Online (Sandbox Code Playgroud)

如果II以dev模式运行此项目(python manage.py runserver 0.0.0.0:8000),则不会发生.但是当我在apache中部署这个项目时,就会出现这个问题.

在这个项目中,我使用nltk包和mongodb,而numpy是一个依赖项.我的操作系统是CentOS 6.3,我将python从2.6.6升级到2.7.3,这是我自己编译的.

按照一些说明,我使用./configure--enable-unicode = ucs2重新编译和重建python.但这似乎不起作用.

所以任何人都知道原因或解决方案?非常感谢!

python django numpy

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

使用颜色条在绘图中设置相同的纵横比

我需要生成一个在两个轴上具有相同纵横比且在右侧具有颜色条的图。我尝试过设置aspect='auto'aspect=1、 ,但aspect='equal'没有好的结果。请参阅下面的示例和 MWE。

使用aspect='auto'颜色条的高度正确,但绘图扭曲:

在此输入图像描述

使用aspect=1aspect='equal'绘图是方形的(两个轴的长宽相等),但颜色条扭曲:

在此输入图像描述

在这两个图中,由于某种原因,颜色条的位置离右侧太远。如何获得具有匹配高度的颜色条的方形图?


微量元素

import numpy as np
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt

def col_plot(params):

    gs, i, data = params

    xarr, yarr, zarr = zip(*data)[0], zip(*data)[1], zip(*data)[2]

    xmin, xmax = min(xarr), max(xarr)
    ymin, ymax = min(yarr), max(yarr)

    #plt.subplot(gs[i], aspect='auto')
    plt.subplot(gs[i], aspect=1)
    #plt.subplot(gs[i], aspect='equal')

    plt.xlim(xmin, xmax)
    plt.ylim(xmin, xmax)
    plt.xlabel('$x axis$', fontsize=20)
    plt.ylabel('$y axis$', fontsize=20)
    # Scatter plot.
    cm = plt.cm.get_cmap('RdYlBu_r')
    SC = plt.scatter(xarr, …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib colorbar

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

如何从列表中切割中间元素

相当简单的问题.说我有一个列表,如:

a = [3, 4, 54, 8, 96, 2]
Run Code Online (Sandbox Code Playgroud)

我可以使用切片在列表中间省略一个元素来生成这样的东西吗?

a[some_slicing]
[3, 4, 8, 96, 2]
Run Code Online (Sandbox Code Playgroud)

这个元素54被遗漏了.我猜想这可以解决问题:

a[:2:]
Run Code Online (Sandbox Code Playgroud)

但结果不是我的预期:

[3, 4]
Run Code Online (Sandbox Code Playgroud)

python slice

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

Sublime 3:即使没有选择文本,Ctrl-c也会触发,在剪贴板中删除文本

我正在使用Sublime 3083.

假设我Ctrl-x在文件中剪切了一些text(),然后尝试将其粘贴到其他地方,在同一个文件或另一个文件中.

  1. 我将光标定位在我要粘贴文本的行上.

  2. 如果我点击Ctrl-v文字粘贴没有问题.

  3. 但是如果我不小心碰到了Ctrl-c,那么被剪切的文字就不能再粘贴了.它从剪贴板中删除,我被迫Ctrl-z回到文本被剪切之前的那一点.

即使击中时未选择任何文本,也会发生这种情况Ctrl-c.

我测试过,这种行为似乎是独家的Sublime.这是一个功能吗?如果是这样,它可以被禁用吗?

sublimetext sublimetext3

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