这是我所追求的MWE,改编自这个问题:
from matplotlib.pyplot import plot, draw, show
def make_plot():
plot([1,2,3])
draw()
print 'continue computation'
print('Do something before plotting.')
# Now display plot in a window
make_plot()
answer = raw_input('Back to main and window visible? ')
if answer == 'y':
print('Excellent')
else:
print('Nope')
show()
Run Code Online (Sandbox Code Playgroud)
我想要的是:我调用函数来创建绘图,出现绘图窗口,然后我回到提示符,这样我就可以输入一些值(基于刚才显示的图像)并继续执行代码(窗口可以关闭或保持在那里,我不在乎).
我得到的是,带有绘图的窗口仅在代码完成后出现,这是不好的.
我尝试了以下相同的结果,绘图窗口出现在代码的末尾而不是之前:
from matplotlib.pyplot import plot, ion, draw
ion() # enables interactive mode
plot([1,2,3]) # result shows immediately (implicit draw())
# at the end call show to ensure window …Run Code Online (Sandbox Code Playgroud) 该random模块(http://docs.python.org/2/library/random.html)具有几个固定的函数来随机抽样.例如,random.gauss将使用给定的均值和西格玛值对具有正态分布的随机点进行采样.
我正在寻找一种方法来提取一些N用我自己的分布的给定区间之间随机样本尽可能快地在python.这就是我的意思:
def my_dist(x):
# Some distribution, assume c1,c2,c3 and c4 are known.
f = c1*exp(-((x-c2)**c3)/c4)
return f
# Draw N random samples from my distribution between given limits a,b.
N = 1000
N_rand_samples = ran_func_sample(my_dist, a, b, N)
Run Code Online (Sandbox Code Playgroud)
这里ran_func_sample是我后和a, b是从中可以得出样本的限制.有那种东西python吗?
右侧边栏中有一个矩形区域,显示您在整个文件的上下文中所处的当前代码块,但是有点难以看到,有人知道如何使颜色更明显吗?

(抱歉要问,但http://statsmodels.sourceforge.net/目前已关闭,我无法访问文档)
我正在使用线性回归statsmodels,基本上:
import statsmodels.api as sm
model = sm.OLS(y,x)
results = model.fit()
Run Code Online (Sandbox Code Playgroud)
我知道我可以打印出完整的结果集:
print results.summary()
Run Code Online (Sandbox Code Playgroud)
输出如下:
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.952
Model: OLS Adj. R-squared: 0.951
Method: Least Squares F-statistic: 972.9
Date: Mon, 20 Jul 2015 Prob (F-statistic): 5.55e-34
Time: 15:35:22 Log-Likelihood: -78.843
No. Observations: 50 AIC: 159.7
Df Residuals: 49 BIC: 161.6
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1 1.0250 0.033 …Run Code Online (Sandbox Code Playgroud) 我有一个如下图:

我想增加图例中点的大小(是图例还是键?),但不增加图中点的大小.它在图片中得到了更好的解释.这可以实现吗?
我试图python尽可能接近返回图像中最明显聚类的中心,如下图所示:

在我之前的问题中,我问过如何获得二维数组的全局最大值和局部最大值,并且给出的答案完美无缺.问题在于我可以通过平均使用不同的bin大小获得的全局最大值得到的中心估计总是稍微偏离我用眼睛设置的那个,因为我只考虑最大的bin而不是一组最大的bin (就像一个人的眼睛).
我尝试将这个问题的答案适应我的问题,但事实证明我的图像太嘈杂,无法使算法工作.这是我实现该答案的代码:
import numpy as np
from scipy.ndimage.filters import maximum_filter
from scipy.ndimage.morphology import generate_binary_structure, binary_erosion
import matplotlib.pyplot as pp
from os import getcwd
from os.path import join, realpath, dirname
# Save path to dir where this code exists.
mypath = realpath(join(getcwd(), dirname(__file__)))
myfile = 'data_file.dat'
x, y = np.loadtxt(join(mypath,myfile), usecols=(1, 2), unpack=True)
xmin, xmax = min(x), …Run Code Online (Sandbox Code Playgroud) 我有一个复杂的曲线定义为表中的一组点,如此(完整的表在这里):
# x y
1.0577 12.0914
1.0501 11.9946
1.0465 11.9338
...
Run Code Online (Sandbox Code Playgroud)
如果我使用命令绘制此表:
plt.plot(x_data, y_data, c='b',lw=1.)
plt.scatter(x_data, y_data, marker='o', color='k', s=10, lw=0.2)
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:

我手动添加红点和段的地方.我需要的是一种计算每个点的那些段的方法,即:找到从该2D空间中的给定点到插值曲线的最小距离的方法.
我不能使用到数据点本身的距离(产生蓝色曲线的黑点),因为它们不是以相等的间隔定位,有时它们是接近的,有时它们相距很远,这深深地影响了我的结果.线.
由于这不是一个表现良好的曲线,我不能确定我能做什么.我尝试使用UnivariateSpline进行内插,但它返回的非常差:
# Sort data according to x.
temp_data = zip(x_data, y_data)
temp_data.sort()
# Unpack sorted data.
x_sorted, y_sorted = zip(*temp_data)
# Generate univariate spline.
s = UnivariateSpline(x_sorted, y_sorted, k=5)
xspl = np.linspace(0.8, 1.1, 100)
yspl = s(xspl)
# Plot.
plt.scatter(xspl, yspl, marker='o', color='r', s=10, lw=0.2)
Run Code Online (Sandbox Code Playgroud)

我也试过增加插值点的数量但是弄得一团糟:
# Sort data according …Run Code Online (Sandbox Code Playgroud) 我运行Ubuntu 12.04自带其默认使用NumPy 1.6.0(我有,其实有,Python 2.7.3安装).由于这个问题的答案,polyfit()得到了一个意想不到的关键字参数'w',我需要升级它.
我从这里下载了.tar.gz版本的软件包,解压缩,移动到文件夹中并运行命令:1.8.0
python setup.py build --fcompiler=gnu95
python setup.py install --user
Run Code Online (Sandbox Code Playgroud)
如用户指南和此问题中所述:在Ubuntu上构建NumPy 1.7.1.
这导致NumPy不再加载Spyder,现在显示错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py", line 16, in <module>
from pylab import * #analysis:ignore
File "/usr/local/lib/python2.7/dist-packages/pylab.py", line 1, in <module>
from matplotlib.pylab import *
File "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py", line 165, in <module>
from matplotlib.rcsetup import (defaultParams,
File "/usr/local/lib/python2.7/dist-packages/matplotlib/rcsetup.py", line 20, in <module>
from …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的numpy数组:
foo_array = [38,26,14,55,31,0,15,8,0,0,0,18,40,27,3,19,0,49,29,21,5,38,29,17,16]
Run Code Online (Sandbox Code Playgroud)
我想用整个数组的中值替换所有零(其中零值不包括在中位数的计算中)
到目前为止,我有这样的事情:
foo_array = [38,26,14,55,31,0,15,8,0,0,0,18,40,27,3,19,0,49,29,21,5,38,29,17,16]
foo = np.array(foo_array)
foo = np.sort(foo)
print "foo sorted:",foo
#foo sorted: [ 0 0 0 0 0 3 5 8 14 15 16 17 18 19 21 26 27 29 29 31 38 38 40 49 55]
nonzero_values = foo[0::] > 0
nz_values = foo[nonzero_values]
print "nonzero_values?:",nz_values
#nonzero_values?: [ 3 5 8 14 15 16 17 18 19 21 26 27 29 29 31 38 38 40 49 55]
size = …Run Code Online (Sandbox Code Playgroud) python ×7
numpy ×4
matplotlib ×2
arrays ×1
bitbucket ×1
dropbox ×1
enthought ×1
git ×1
github ×1
gnuplot ×1
installation ×1
io ×1
performance ×1
random ×1
replace ×1
scipy ×1
spline ×1
statsmodels ×1
sublimetext ×1
sublimetext2 ×1
sublimetext3 ×1
ubuntu ×1
upgrade ×1