我用一些奇怪的分隔(即用逗号分隔的值组,用制表符与其他值分隔)将数据制成表格:
A,345,567 56 67 test
Run Code Online (Sandbox Code Playgroud)
是否有一种干净而巧妙的方法来处理以下任何一个中的多个分隔符:csv module、numpy.genfromtxt或numpy.loadtxt?
我找到了这样的方法,但我希望有更好的解决方案。理想情况下,我想使用 genfromtxt 和正则表达式作为分隔符。
是否有一种现成的方法可以从网格中心位置(红点)推断网格角位置(蓝点)?
我正在使用的网格不是矩形的,因此常规双线性插值似乎不是最好的方法;不过,这只是为了让我绘制我的数据使用情况pyplot.pcolormesh(),所以也许这并不重要。

网格数据示例:
import numpy as np
lons = np.array([[ 109.93299681, 109.08091365, 108.18301276, 107.23602539],
[ 108.47911382, 107.60397996, 106.68325946, 105.71386119],
[ 107.06790187, 106.17259769, 105.23214707, 104.2436463 ],
[ 105.69908292, 104.78633156, 103.82905363, 102.82453812]])
lats = np.array([[ 83.6484245 , 83.81088466, 83.97177823, 84.13098916],
[ 83.55459198, 83.71460466, 83.87294803, 84.02950188],
[ 83.4569054 , 83.61444708, 83.77022192, 83.92410637],
[ 83.35554612, 83.51060313, 83.6638013 , 83.81501464]])
Run Code Online (Sandbox Code Playgroud) 字符串格式化可用于为matplotlib.basemap颜色条标签指定科学记数法:
cb = m.colorbar(cs, ax=ax1, format='%.4e')
Run Code Online (Sandbox Code Playgroud)
但随后每个标签都在科学上标注为基础.
如果数字足够大,则colobar会自动将它们缩小为科学记数法,将基座(即x10^n)放在颜色条的顶部,只留下系数编号作为标签.
您可以使用标准轴执行此操作,其中包含以下内容:
ax.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
Run Code Online (Sandbox Code Playgroud)
是否有matplotlib.basemap颜色条的等效方法,或者标准的matplotlib颜色条?
我是git的新手,并且已经在一个项目中使用了几个月,并且决定在Github上提供它.我刚刚发现我的备份脚本几乎正常工作,所以我备份了一切,但它很草率.Pheww ......但我希望是B计划.
我意识到一些netCDF数据文件基本上是在版本控制(=大型.git存储库)中复制的,所以我试图通过首先将这些文件扩展名(和一些测试/数据目录)添加到.gitignore根目录中的文件来排除这些文件.这似乎只是忽略这些文件的版本控制,但仍然包含在.git存储库中.然后我将它们添加到了.git/info/exclude,我相信它完全从存储库中忽略它们.
每次发现,我都先做了一次
git pull [my_repo] master
Run Code Online (Sandbox Code Playgroud)
那么一个
git push [my_repo] master
Run Code Online (Sandbox Code Playgroud)
在第二次迭代之后(当我认为我只添加了.gitignore的东西时),我收到一条错误,指出我对需要合并的文件有一些问题.我首先创建了.gitignoregitHub,这是不同的,我认为这是问题并开始合并.
在第三次迭代(已经添加了.git/info/exclude文件),一切都很顺利,但我看到只有我想要的目录EXCLUDED出现在gitHub上.回到我的磁盘上,其他一切都消失了,包括netCDF数据文件......
我试过了git reset --hard master,重置时一切都一样.
我似乎无法找到类似的问题; 但是,我想我不可能是第一个做到这一点的人.
我希望将某个级别(在这种情况下0)下的值绘制为透明matplotlib.pcolormesh(),并且我似乎无法使用我找到的选项进行任何处理。
我试过设置kwarg vmin=1,我试过用 设置限制plt.cm.cmap.set_under(alpha=0)。
更新:在使用示例脚本后,它似乎vmin对我来说工作正常,所以它似乎是对其他一些混淆因素的影响。我正在使用Basemap并尝试绘制密度图,根据数据的最小值/最大值设置级别(其他所有内容为零)。
我的示例脚本显示 vmin 工作:
import matplotlib.pyplot as plt
import random
import numpy as np
x = np.linspace(1,4,num=4)
y = np.linspace(1,6,num=6)
x_mesh, y_mesh = np.meshgrid(x,y)
ydim, xdim = x_mesh.shape
z = np.zeros(((ydim-1),(xdim-1)))
for j in range(ydim-1):
for i in range(xdim-1):
z[j,i] = (random.random())+4.
z[1:4,1:2]=0
cmap = plt.cm.Reds
plt.pcolormesh(x,y,z, cmap=cmap, vmin=4)
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出:

我试图在basemap地图上设置一些密度数据的动画.按照[本SO问题] [1]中的方法,我得到以下错误:
/usr/local/lib/python2.7/dist-packages/matplotlib/collections.pyc in update_scalarmappable(self)
627 if self._A is None:
628 return
--> 629 if self._A.ndim > 1:
630 raise ValueError('Collections can only map rank 1 arrays')
631 if not self.check_update("array"):
AttributeError: 'list' object has no attribute 'ndim'
Run Code Online (Sandbox Code Playgroud)
如果我init()用空值设置数据self.quad.set_array(self.z.ravel()),我最终得到两个绘制的地图,没有数据被动画.
任何人都可以解决我做错的任何亮点都将不胜感激.谢谢!
示例代码:
def plot_pcolor(lons,lats):
class UpdateQuad(object):
def __init__(self,ax, map_object, lons, lats):
self.ax = ax
self.m = map_object
self.lons = lons
self.lats = lats
self.ydim, self.xdim = lons.shape
self.z = np.zeros((self.ydim-1,self.xdim-1))
x, y = self.m(lons, …Run Code Online (Sandbox Code Playgroud) 假设我们有两个数据数组:x = [1,2,3] y = [2,4,6]显然,线性拟合将返回2的斜率和0的截距,当然,这两个例程脾气暴躁linalg.lstsq(),polyfit()并且成功。但是他们认为坡度和截距是要搜索的参数。
是否可以保持斜率固定并仅定义截距?
我正在使用bokeh( 0.12.6) 实用程序进行交互式数据操作,我将在包中部署该实用程序。The idea is that a user can run a some routine module.utility()that will start the bokeh server, launch the application in a browser, and when the tab or browser are closed, the server will be stopped.
如果我运行bokeh serve --show myapp,我的应用程序可以正常启动,但是在使用我下面描述的方法连接到本地主机时它会挂起。我检查了处理程序,一切看起来都应该如此。
这是一件合理的事情吗,我的做法是否正确?
目录格式
<installed module path>/myapp
??? main.py
Run Code Online (Sandbox Code Playgroud)
./myapp将住在哪里venv/lib/python3.5/site-packages/mymodule等。
主文件
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.plotting import figure
from bokeh.models.sources import ColumnDataSource
source = ColumnDataSource(dict(x=list(range(5)), y=list(range(5)))) …Run Code Online (Sandbox Code Playgroud) 我想在Fortran 中做这样的事情:
program where
real :: a(6) = (/ 4, 5, 6, 7, 8, 9 /)
print *, a(a>7)
end program
Run Code Online (Sandbox Code Playgroud)
在Python 中,我通常会像这样使用NumPy 执行此操作:
program where
real :: a(6) = (/ 4, 5, 6, 7, 8, 9 /)
print *, a(a>7)
end program
Run Code Online (Sandbox Code Playgroud)
我玩过,但到目前为止没有任何效果,但我猜这很简单。