我试图在ipython笔记本的matplotlib图中得到一个"度"符号(°).
我跑的时候
ax = plt.gca()
ax.set_xlabel("something at 55" + unicode("\xc2", errors='replace'))
ax.plot([0.,1.,], [0.,1.])
Run Code Online (Sandbox Code Playgroud)
我得到了一个情节,但不是学位标志,我有一个带问号的奇怪的黑色方块.当我尝试savefig将图形转换为PDF 时,也会发生这种情况.
如果我试着跑
ax = plt.gca()
ax.set_xlabel("something at 55°")
ax.plot([0.,1.,], [0.,1.])
Run Code Online (Sandbox Code Playgroud)
我收到错误(见下文).
知道我做错了什么吗?
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/zmq/pylab/backend_inline.pyc in show(close)
100 try:
101 for figure_manager in Gcf.get_all_fig_managers():
--> 102 send_figure(figure_manager.canvas.figure)
103 finally:
104 show._to_draw = []
/usr/lib/python2.7/dist-packages/IPython/zmq/pylab/backend_inline.pyc in send_figure(fig)
188 """
189 fmt = InlineBackend.instance().figure_format
--> 190 data = print_figure(fig, fmt)
191 # print_figure will return None if there's nothing to draw: …Run Code Online (Sandbox Code Playgroud) 我有一个测量频谱,即一维数组spec与spec.shape = (n, )。单个点对应于不均匀地间隔开的波长,存储在一维数组wl与wl.shape = (n, )。现在,我需要使用预定义的FWHM的高斯函数对该频谱进行卷积。
如何使用numpy / scipy做到这一点?
目前,我有这个:
fwhm = .22
gaussian_window = scipy.signal.gaussian(spec.size, std=fwhm/2.3548201)
result = scipy.signal.fftconvolve(spec, gaussian_window)
Run Code Online (Sandbox Code Playgroud)
但是,这根本没有考虑输入数据的不均匀间距。
任何帮助是极大的赞赏 :)
我想按照http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_7.html#SEC72上的指南在Makefile中编写一些条件.但是,我得到错误Makefile:219: *** missing separator. Stop.,其中第219行是ifeq语句的行.这三条线以-$(FC)标签开头.
我正在使用GNU Make 3.81.任何帮助是极大的赞赏!
[...]
mod: $(MODBIN)
$(MODBIN): $(MODSRC)
ifeq($(FC),gfortran)
-$(FC) $(MODFLAGS) -J$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
else ifeq($(FC),ifort)
-$(FC) $(MODFLAGS) -module $(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
else ifeq ($(FC),xlf2003_r)
-$(FC) $(MODFLAGS) -qmoddir=$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
endif
io: $(IOBIN)
[...]
Run Code Online (Sandbox Code Playgroud)
编辑:按照@ sagar-sakre的建议,我改为:
[...]
mod: $(MODBIN)
$(MODBIN): $(MODSRC)
ifeq($(B3dC),gfortran)
-$(FC) $(MODFLAGS) -J$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 …Run Code Online (Sandbox Code Playgroud) 我有一个广泛使用shutil.copy2的Python脚本.因为我用它来通过网络复制文件,所以我的I/O错误太频繁,导致我的程序执行中止:
Traceback (most recent call last):
File "run_model.py", line 46, in <module>
main()
File "run_model.py", line 41, in main
tracerconfigfile=OPT.tracerconfig)
File "ModelRun.py", line 517, in run
self.copy_data()
File "ModelRun.py", line 604, in copy_ecmwf_data
shutil.copy2(remotefilename, localfilename)
File "/usr/lib64/python2.6/shutil.py", line 99, in copy2
copyfile(src, dst)
File "/usr/lib64/python2.6/shutil.py", line 54, in copyfile
copyfileobj(fsrc, fdst)
File "/usr/lib64/python2.6/shutil.py", line 27, in copyfileobj
buf = fsrc.read(length)
IOError: [Errno 5] Input/output error
Run Code Online (Sandbox Code Playgroud)
如何避免中止程序的执行并重新尝试复制过程?
我正在使用的代码已经通过检查filesize来检查文件是否完全被复制:
def check_file(file, size=0):
if not os.path.exists(file):
return False
if (size != 0 and …Run Code Online (Sandbox Code Playgroud) 我正试图在蒙面数组上使用pcolor.我希望蒙面元素以特殊颜色显示.我写了一些代码,但它似乎不起作用:
import matplotlib as mpl
import matplotlib.pyplot as plt
from numpy import linspace
from numpy.random import randn
from numpy.ma import masked_invalid
D = randn(12*72).reshape((12,72))
D[4,:] = nan
D[6,6] = nan
D = masked_invalid(D)
cmap = mpl.cm.bwr
c map.set_bad('k', 1.)
xbin = linspace(0, 12, 13)
ybin = linspace(-90, 90, 73)
fig = plt.figure()
spl = fig.add_subplot(111)
pl = spl.pcolor(xbin, ybin, D.T, cmap=cmap, edgecolors='none',
vmin=-5, vmax=5)
Run Code Online (Sandbox Code Playgroud) 我有一个可执行文件,我需要经常运行,具有不同的参数.为此,我使用多处理模块编写了一个小型Python(2.7)包装器,遵循此处给出的模式.
我的代码看起来像这样:
try:
logging.info("starting pool runs")
pool.map(run_nlin, params)
pool.close()
except KeyboardInterrupt:
logging.info("^C pressed")
pool.terminate()
except Exception, e:
logging.info("exception caught: ", e)
pool.terminate()
finally:
time.sleep(5)
pool.join()
logging.info("done")
Run Code Online (Sandbox Code Playgroud)
我的工作人员在这里:
class KeyboardInterruptError(Exception): pass
def run_nlin((path_config, path_log, path_nlin, update_method)):
try:
with open(path_log, "w") as log_:
cmdline = [path_nlin, path_config]
if update_method:
cmdline += [update_method, ]
sp.call(cmdline, stdout=log_, stderr=log_)
except KeyboardInterrupt:
time.sleep(5)
raise KeyboardInterruptError()
except:
raise
Run Code Online (Sandbox Code Playgroud)
path_config是二进制程序的配置文件的路径; 例如,运行程序的日期.
当我启动包装器时,一切看起来都很好.但是,当我按下时^C,包装器脚本似乎numproc在终止之前从池中启动了其他进程.举个例子,当我在1-10天启动脚本时,我可以在ps aux输出中看到二进制程序的两个实例正在运行(通常是第1天和第3天).现在,当我按下^C,包装器脚本退出时,第1天和第3天的二进制程序消失了,但是有新的二进制程序在第5天和第7天运行.
所以对我来说,似乎在最终死亡之前Pool启动另一个numproc …
我有一个3d stl矢量,
vector<vector<vector<double> > > mdata;
Run Code Online (Sandbox Code Playgroud)
我也有一个功能
myfun(const double ya[]);
Run Code Online (Sandbox Code Playgroud)
更准确地说,它是GNU科学图书馆的一个功能,
gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
Run Code Online (Sandbox Code Playgroud)
但这与我的问题无关.
所以现在我想将数据的"最后"维度传递给myfun.我一直在尝试这个:
for (int s = 0; s < msize; s++) {
accelerators = new gsl_interp_accel*[msize];
splines = new gsl_spline*[msize];
for (int i = 0; i < msize; i++) {
accelerators[i] = gsl_interp_accel_alloc();
splines[i] = gsl_spline_alloc(gsl_interp_cspline_periodic, msize+1);
gsl_spline_init(splines[i], &(*mgrid.begin()), &(*mdata[s][i].begin()), msize+1);
}
}
Run Code Online (Sandbox Code Playgroud)
但是编译器(g ++,64bit,Ubuntu)抱怨道:
在成员函数"
std::vector<std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >, std::allocator<std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, …
我想绘制来自全局多维数据集的数据,但仅用于国家列表.所以我根据国家的"边界框"选择一个子立方体.
到现在为止还挺好.我正在寻找的是一种简单的方法来掩盖多维数据集的所有点,这些点不属于我的任何国家(表示为特征),因此只有那些位于我的任何特征内的立方体点被绘制.
非常感谢任何想法=)
我想使用自己的模板生成带有rst2html的HTML页面.这些模板包含许多%的符号,例如
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
Run Code Online (Sandbox Code Playgroud)
现在,当我使用命令调用rst2html时
rst2html --template=layout2.tpl rst/index.rst > index.html
Run Code Online (Sandbox Code Playgroud)
我收到了错误
ValueError:索引827处不支持的格式字符'"'(0x22)
我发现问题是rst2html认为%"是一个占位符.
我已经尝试过逃避模板中的%,比如
<TABLE border="0" cellpadding="0" cellspacing="0" width="100\%">
Run Code Online (Sandbox Code Playgroud)
但这不起作用,错误是一样的.
所以我的问题是如何解决这个问题.任何帮助是极大的赞赏!
我有一个函数来计算几个不同的值:
int ASPfile::get_dimensions(int* Lat, int* Lon,
vector<double>* Latgrid, vector<double>* Longrid) {
_latsize = get_latsize();
_lonsize = get_lonsize();
Lat = &_latsize;
Lon = &_lonsize;
latgrid = read_latgrid();
longrid = read_longrid();
*Latgrid = latgrid;
*Longrid = longrid;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该函数调用如下:
int* Latsize = NULL;
int* Lonsize = NULL;
vector<double>* Latgrid = NULL;
vector<double>* Longrid = NULL;
int res = asp->get_dimensions(Latsize,Lonsize,Latgrid,Longrid);
Run Code Online (Sandbox Code Playgroud)
然后,我尝试访问如下值:
cout << (*Szagrid)[4];
Run Code Online (Sandbox Code Playgroud)
或者像这样
cout << Szagrid->at(4);
Run Code Online (Sandbox Code Playgroud)
该程序编译时没有任何警告.但是,当我尝试访问get_dimensions()应该"填充"的指针时,valgrind会向我显示以下内容:
==10531== Invalid read of size 8
==10531== at 0x633D5DA: std::vector<double, std::allocator<double> >::operator=(std::vector<double, …Run Code Online (Sandbox Code Playgroud) python ×5
c++ ×2
function ×2
matplotlib ×2
numpy ×2
cartopy ×1
const ×1
convolution ×1
ipython ×1
linux ×1
makefile ×1
pointers ×1
python-iris ×1
scipy ×1
shutil ×1
subprocess ×1
unicode ×1
vector ×1