我在一个psudo-operational环境中工作,我们在接收数据时创建新的图像.有时,当新数据进入时,我们需要重新打开图像并更新该图像以创建合成图像,添加叠加层等.除了添加图像之外,还需要修改标题,图例等.
matplotlib中是否有内容可以让我存储和重新加载我的matplotlib.pyplot对象供以后使用?它需要保持对所有相关对象的访问,包括数字,线条,图例等.也许泡菜是我正在寻找的,但我对此表示怀疑.
我认为我完全理解这一点,但我只是想确保,因为我总是看到别人说绝对不要测试反对True,False或None.他们建议例程应该引发错误而不是返回False或None.无论如何,我有很多情况我只想知道是否设置了一个标志,所以我的函数返回True或False.如果没有有用的结果,还有其他情况我有一个函数返回None.从我的想法来看,只要我意识到我永远不应该使用,就不会有问题:
if foo == True
if foo == False
if foo == None
Run Code Online (Sandbox Code Playgroud)
而应该使用:
if foo is True
if foo is False
if foo is None
Run Code Online (Sandbox Code Playgroud)
因为True,False和None都是单例,并且总是会在使用"is"而不是"=="时评估我的预期方式.我错了吗?
沿着相同的路线,修改有时返回None的函数会更加pythonic,以便它们引发错误吗?假设我有一个名为"get_attr()"的实例方法,它从某个文件中检索属性.如果它发现我请求的属性不存在则返回None是否合适?让他们提出错误并在以后捕获它会更好吗?
我认为这个问题已在某个地方得到解决,但我花了大量时间寻找答案,包括深入研究源代码.我试图把问题放在第一段.其余部分显示了问题的基本示例.
我正在尝试编译一个包含USE指向另一个更通用的模块的语句的模块.我更希望将使用过的模块保持独立,以便可以将它作为一组常规设置用于多个"包"中.当我使用f2py编译这两个模块时,一切都像fortran那样宣传,但是从python那边USE看起来似乎被忽略了.如果我允许f2py生成签名文件,则该文件包含USE适当的语句,但如果我完成编译并从结果库导入,则使用模块中的参数在包含use语句的模块中不可用.以下是说明情况的两个模块:
MODULE test
INTEGER, PARAMETER :: a = 1
END MODULE test
MODULE test2
USE test
INTEGER, PARAMETER :: b = 2
END MODULE test2
Run Code Online (Sandbox Code Playgroud)
为了显示我跑的中间步骤f2py -h test.pyf test.f90 test2.f90.生成以下签名文件; 请注意"test2"模块包含"use test":
! -*- f90 -*-
! Note: the context of this file is case sensitive.
python module test ! in
interface ! in :test
module test ! in :test:test.f90
integer, parameter,optional :: a=1
end module test
module test2 ! in …Run Code Online (Sandbox Code Playgroud) 我正在努力将我当前的 dockerfiles 转换为多阶段构建以减少一些麻烦。我从一个基本映像开始,通过 yum 安装一堆东西以及我从源代码安装的一堆其他包。
在这一点上,我想从一个新的镜像开始,只引入通过 yum 安装的包和我从源安装的二进制文件。我看到了三种方法来做到这一点,但我不喜欢第一个选项,也不知道如何做另外两个。
为 yum 安装构建一个单独的 Dockerfile,然后在从源安装之前将其用作我的基本映像。
我不喜欢这个选项,因为它增加了我的构建工作流程。将所有内容都包含在一个 Dockerfile 中会很好。不过,也许这就是我需要走的路。
通过 yum 在不同目录中安装软件包并复制到构建的下一阶段。
我发现我可以通过 将软件包安装在非默认目录中yum install --installroot=/foo --releasever=/ packagename,但是,这会将所有要求安装到 /foo 而不是继续使用安装在 /usr 中的软件包,从而导致映像显着增长。
有没有办法通过 yum 在不同的目录中安装软件包,但它是否继续从默认目录解析其依赖项?
通过 yum 安装包,然后从安装 yum 包后开始下一个构建阶段。
有没有办法将构建阶段产生的层用作下一个构建阶段的开始?像这样的东西:
FROM centos7 as first
RUN some stuff
FROM first as second
RUN some stuff
FROM second
COPY --from=second ...
Run Code Online (Sandbox Code Playgroud) 尝试覆盖子类中的属性时,我对此行为有点困惑.
第一个例子设置了两个类,Parent和Child. Parent继承自object,而Child继承自Parent.该属性a是使用属性装饰器定义的.当child.a调用setter方法时,AttributeError会引发a.
在第二个例子中,通过使用property()函数而不是装饰器,一切都按预期工作.
谁能解释为什么行为不同?此外,是的,我知道__init__不需要Child 中的定义.
@propertyclass Parent(object):
def __init__(self):
self._a = 'a'
@property
def a(self):
return self._a
@a.setter
def a(self, val):
self._a = val
class Child(Parent):
def __init__(self):
super(Child, self).__init__()
@property
def a(self):
return super(Child, self).a
@a.setter
def a(self, val):
val += 'Child'
super(Child, self).a = val
p = Parent()
c = Child()
print …Run Code Online (Sandbox Code Playgroud) 正如标题所要求的;--build和--force-recreate标志之间有什么区别docker-compose up?
在我看来,这些功能可以做同样的事情,但是也许我缺少了一些东西。
我熟悉容器,但对 Singularity 很陌生,今晚我发现自己在 Singularity 容器中与损坏的 Python 安装作斗争。事实证明,这是因为在$HOME我不知情的情况下被安装到我的容器中。
我想我已经喜欢上了 Python 中的“显式优于隐式”这句话。对我来说,自动安装特定目录是意想不到的行为。
三个问题:
--no-home标志,但是是否有一个标志可以禁用所有默认安装而不需要更改默认的 Singularity 配置?我试图将具有相关纬度和经度的不规则网格化数据集(原始卫星数据)映射到由给定的经常网格化的纬度和经度集basemap.makegrid().我使用matplotlib.mlab.griddata与mpl_toolkits.natgrid安装.下面是whosipython中用作输出的变量列表以及变量的一些统计信息:
Variable Type Data/Info
-------------------------------
datalat ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
datalon ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
gridlat ndarray 1200x1000: 1200000 elems, type `float64`, 9600000 bytes (9 Mb)
gridlon ndarray 1200x1000: 1200000 elems, type `float64`, 9600000 bytes (9 Mb)
var ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
In [11]: var.min()
Out[11]: -30.0
In [12]: var.max()
Out[12]: 30.0
In [13]: …Run Code Online (Sandbox Code Playgroud) 我有一个函数(foo),它是另一个函数()的便捷函数包装器bar. foo调用bar,然后在输出上执行另外几个任务.例如:
def bar(bar_arg, bar_kw=None):
#do some stuff
return ret
def foo(bar_arg, foo_arg, bar_kw=None, foo_kw=None):
ret = bar(bar_arg, bar_kw)
ret.some_method(foo_arg, foo_kw=foo_kw)
Run Code Online (Sandbox Code Playgroud)
我希望调用签名foo包含关键字和参数,bar以便用户检查foo知道他们可以传递什么,但是,我想避免自己维护完整的参数列表,因为它bar往往会因为它来自的包而改变更新并且其参数列表很长.由于foo始终bar使用bar接受的参数和关键字的完整列表进行调用,因此我不认为我应该自己维护列表.
有没有办法根据呼叫签名构建foo呼叫签名bar?另外,有没有办法捕捉输入foo在字典或命名空间,这样我可以很容易地分开使用的参数和关键字foo从那些使用bar?
注意,我知道*args和**kwargs.但是,它们使函数签名不明确,并且不会通知用户允许哪些参数和关键字参数.
编辑:我应该注意我的用例比这个例子复杂得多.被调用的外部函数(bar)是matplotlib.colorbar.ColorbarBase.调用函数(foo)是绘图类的类方法,该类在我自己的许多应用程序中使用,其他应用程序可能在将来使用. foo创建一个颜色条,然后根据不接受的其他参数和关键字在颜色条上执行其他工作ColorbarBase.
我目前有很多其他语言使用的色彩图,我想将其导入python以在matplotlib中使用。我能够将三列ascii文件转换为RGB数组,然后转换为如下的色图:
def from_ascii(filename, name):
palette = open(filename)
lines = palette.readlines()
carray = np.zeros([len(lines), 3])
for num, line in enumerate(lines):
carray[num, :] = [float(val) for val in line.strip().split()]
cmap = colors.ListedColormap(carray, name=name)
Run Code Online (Sandbox Code Playgroud)
然后,我可以注册该颜色图:
cm.register_cmap(name=name, cmap=cmap)
Run Code Online (Sandbox Code Playgroud)
以便:
In [4]: cm.get_cmap('my_cmap')
Out[4]: <matplotlib.colors.ListedColormap instance at 0x1b114c68>
Run Code Online (Sandbox Code Playgroud)
问题是,cm.get_cmap()如果我在同一程序中,则只能检索我的自定义颜色图。一旦我尝试从单独的脚本中调用自定义颜色图,就cm.get_cmap()返回None。
我敢肯定我误会了...
编辑:如果可能的话,我仍然希望得到这个问题的答案,但我已经设法通过直接安装各个 rpms 而不是依靠 yum 来解决它。
我正在努力在 CentOS 7 机器上安装 docker-ce。我将它安装在其他三个盒子上,但第四个给了我问题。我正在按照此处的说明进行操作。安装 repo 似乎有效,但docker-ce无论我尝试什么,似乎都不可用。
$ sudo yum-config-manager \
> --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
$ ls /etc/yum.repos.d/docker-ce.repo
/etc/yum.repos.d/docker-ce.repo
# This should include docker-ce, docker-ce-cli, and a few other things
$ yum --disablerepo="*" --enablerepo="docker-ce-stable" list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
containerd.io.x86_64 1.2.6-3.3.el7 docker-ce-stable
$ sudo …Run Code Online (Sandbox Code Playgroud) python ×7
matplotlib ×3
docker ×2
numpy ×2
python-2.7 ×2
centos7 ×1
f2py ×1
fortran90 ×1
scipy ×1
yum ×1