如何在jinja2中连接两个列表变量?
例如
GRP1 = [1, 2, 3]
GRP2 = [4, 5, 6]
{# This works fine: #}
{% for M in GRP1 %}
Value is {{M}}
{% endfor %}
{# But this does not: #}
{% for M in GRP1 + GRP2 %}
Value is {{M}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
所以,我试图使用+连接两个列表(就像在Python中一样),但事实证明它们不是列表,而是python xrange对象:
jijna2 error: unsupported operand type(s) for +: 'xrange' and 'xrange'
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在同一个for循环中迭代GRP1和GRP2的串联?
我有一个Android应用程序,可以将图像作为位图加载并在ImageView中显示.问题是图像看起来具有透明背景; 这会导致图像上的一些黑色文本在黑色背景下消失.
如果我将ImageView背景设置为白色,那种工作,但我在图像上得到了丑陋的大边框,它被拉伸以适合父级(实际图像在中间缩放).
所以 - 我想将位图中的透明像素转换为纯色 - 但我无法弄清楚如何做到这一点!
任何帮助将不胜感激!
谢谢克里斯
我有这个numpy数组,其中每行中的值将始终排序并单调增加:
a = np.array([[1, 2, 3, 4, 8],
[2, 5, 6, 7, 8],
[5, 7, 11, 12, 13]])
Run Code Online (Sandbox Code Playgroud)
我想为每一行搜索以下值(未排序或单调):
b = np.array([4.5, 2.3, 11.6])
Run Code Online (Sandbox Code Playgroud)
这样我得到了答案:
[4, 1, 3]
Run Code Online (Sandbox Code Playgroud)
但是,searchsorted不支持这种情况(感觉它需要一个axis关键字).
对于一个非常大的阵列,我是否有一种有效的方法可以做到这一点?显然有一个for循环我可以索引数组a,b像这样:
for i in np.arange(np.alen(a)):
print a[i].searchsorted(b[i])
Run Code Online (Sandbox Code Playgroud)
但是当a它很大时这很慢.
有没有办法在numpy中更有效率地做到这一点?
这似乎应该很容易 - 但我看不出怎么做:
我有一个时间在X轴上的情节.我想设置两组刻度,小刻度显示当天的小时和主要刻度显示日/月.所以我这样做:
# set date ticks to something sensible:
xax = ax.get_xaxis()
xax.set_major_locator(dates.DayLocator())
xax.set_major_formatter(dates.DateFormatter('%d/%b'))
xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3)))
xax.set_minor_formatter(dates.DateFormatter('%H'))
Run Code Online (Sandbox Code Playgroud)
这标记了刻度线确定,但主刻度标签(日/月)绘制在次刻度标签之上:

如何强制主要刻度标签绘制在次要刻度标签下方?我尝试在DateFormatter中添加换行符转义字符(\n),但由于垂直间距不太正确,所以这是一个很差的解决方案.
任何意见,将不胜感激!
我不能让f2py在单独的子例程中引用模块中的参数,在子例程中它用于定义输入数组维度.即参数在一个模块中是失败的:
! File: testmod.f90
MODULE testmod
INTEGER, PARAMETER :: dimsize = 20
END MODULE testmod
Run Code Online (Sandbox Code Playgroud)
并且参数dimsize需要在另一个文件的子例程(不包含在模块中)中引用,该文件将是我的python模块的入口点:
! File testsub.f90
SUBROUTINE testsub(arg)
USE testmod
REAL, INTENT(IN) :: arg(dimsize)
END SUBROUTINE testsub
Run Code Online (Sandbox Code Playgroud)
我像这样编译:
f2py -m testmod -h testmod.pyf testsub.f90
pgf90 -g -Mbounds -Mchkptr -c -fPIC testmod.f90 -o testmod.o
pgf90 -g -Mbounds -Mchkptr -c -fPIC testsub.f90 -o testsub.o
f2py -c testmod.pyf testmod.o testsub.o
Run Code Online (Sandbox Code Playgroud)
但得到这个错误:
testmodmodule.c: In function 'f2py_rout_testmod_testsub':
testmodmodule.c:180: error: 'dimsize' undeclared (first use in this function)
Run Code Online (Sandbox Code Playgroud)
我已经尝试修改testsub.g90以包含以下指令,如其他建议ni:
SUBROUTINE testsub(arg)
USE testmod
!f2py …Run Code Online (Sandbox Code Playgroud) 我使用matplotlib生成一个绘图,然后使用matplotlib.pyplot.savefig保存到PNG文件.
一切正常,但文件大小非常大(约120Kb).
之后我可以使用ImageMagik(通过shell)通过减少颜色数量和关闭抖动来将文件大小减少到38Kb而不会降低质量:
convert +dither -colors 256 orig.png new.png
Run Code Online (Sandbox Code Playgroud)
我的问题是:我可以在matplotlib中这样做吗?我搜索了文档,找不到任何与设置保存时使用的颜色数等有关的事情....
谢谢!
我试图在两台机器的集群上使用MPICH运行一个简单的MPI程序.然而,一个正在运行Fedora 17而另一个正在运行Debian Squeeze - 不一定是个问题,但问题是两个发行版将他们的mpi执行者放在不同的目录中:
当我从host1运行以下内容时:
mpiexec -hosts host2 -np 1 -wdir /home/chris/src/mpi/ ./mpitest
Run Code Online (Sandbox Code Playgroud)
它失败并出现以下错误
bash: /usr/lib/mpich2/bin/hydra_pmi_proxy: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这似乎是因为hydra_pmi_proxy安装在/usr/lib/mpich2/binFedora机器上而是安装在/usr/binDebian机器上.我假设当我通过ssh从host1生成进程时,它希望在host2上的相同位置找到hydra_pmi_proxy.
如果我只是在该节点上本地运行它,程序在两台机器上运行正常 - 我在尝试在两者上运行它时只会遇到问题.
我已经在MPICH文档中搜索了一种覆盖远程路径的方法hydra_pmi_proxy,但无济于事.
我能以某种方式这样做吗?我认为MPICH的一个优点是它可以轻松处理hetrogeneous host ....
任何见解都将非常感激!
我正在使用带有numpy的python来读取具有相当复杂格式的文本文件中的数值模型中的数据.
Numpy的genfromtxt和fromfile函数运行良好,但只有数据是结构化的.我的数据文件看起来像这样:
------ SNIP
[sitename] [dimemsion 1 size] [dimension 2 size]
[data for dim 1]
[data for dim 2]
[date/time]
[header data]
[data (dim1 * dim2)]
[header]
[data]
...
.
.
[data/time]
[header]
[data]
.
.
etc...
Run Code Online (Sandbox Code Playgroud)
----剪断
所以,我有一个文本和数字的混合和一个复杂(但重复)的布局.如何在使用numpy时阅读本文的最佳方法是什么?
干杯,
克里斯
正如标题所说,真的.
是否有任何反对不使用停止,像这样:
PROGRAM myprog
.
. < do stuff >
.
END PROGRAM myprog
Run Code Online (Sandbox Code Playgroud)
而不是使用显式停止,如下所示:
PROGRAM myprog
.
. < do stuff >
.
STOP
END PROGRAM myprog
Run Code Online (Sandbox Code Playgroud)
我看到很多旧版的fortran代码都有一个STOP之前的版本END PROGRAM,但它真的需要吗?
在我们的Cray机器上,STOP在程序结束时有一个stament将字符串"STOP"写入STDERR,这有点烦人......
我有一些 Python 代码,它使用来自一些海洋模型数据的 matplotlib 绘制大量非常规多边形。
我通过创建 4 个形状为 (N,2) 的 numpy 数组来定义每个补丁的角点,其中 N 是一个大数(比如 500,000)
然后我为每组角创建 matplotlib Patch 对象并将其添加到列表中。最后,我从补丁列表中创建了一个 matplotlib PatchCollection 对象。
问题是 Patch 生成很慢,因为它在 for 循环中。我一直在想办法通过 numpy 广播来加快速度,但无法完全破解。
这是一些示例代码,带有一个小的测试数据集(显然运行起来很快)。
import numpy as np
from matplotlib.collections import PatchCollection
import matplotlib.pyplot as plt
# Cell lat/lon centers:
lons = np.array([ 323.811, 323.854, 323.811, 323.723, 324.162, 324.206, 323.723, 324.162, 323.635, 323.679])
lats = np.array([-54.887, -54.887, -54.858, -54.829, -54.829, -54.829, -54.799, -54.799, -54.770, -54.770])
# Cell size scaling factors:
cx = np.array([1,1,1,2,2,2,4,1,2,1])
cy …Run Code Online (Sandbox Code Playgroud) 我决定学习汇编程序很有趣。我已经用C编写代码多年了。
我遵循了一些在线教程,这些教程打印“ Hello world”并在NASM手册中进行了一些挖掘。一切都很好。因此,我设定了一个循环打印“ hello world”的任务。我知道我可以使用loop操作码来做到这一点,但想对它进行显式编码并使用本.bss节中定义的变量。
但是,当我收到错误消息时,我显然误解了变量赋值如何在汇编中工作:
nasm -felf -o hello.o hello.asm
hello.asm:16: error: invalid combination of opcode and operands
hello.asm:17: error: invalid combination of opcode and operands
hello.asm:28: error: invalid combination of opcode and operands
Run Code Online (Sandbox Code Playgroud)
我尝试在网络上搜索有关变量分配的信息,包括NASM手册,但似乎找不到我需要的信息。有人可以协助吗?这是我的(简单!)代码:
; print "Hello world!" to the screen multiple times
section .data
msg: db 'Hello world!', 10
msglen: equ $ - msg
section .bss
iter: resb 1
section .text
global _start
_start:
; loop 10 times
mov iter, 0 ; …Run Code Online (Sandbox Code Playgroud) 我在TKinter中构建了一个相当复杂的GUI,所以很自然地使用了.grid函数.
我已经将我的一些小部件组合到框架中以使它们更容易处理,但出于某种原因,当我在框架中使用带有小部件的.grid时,粘性属性似乎不起作用 - 我的小部件不会填满整个框架.
例:
f3 = tk.Frame(self, borderwidth=1, relief="ridge")
f3.grid(row=0, column=0, sticky="NS")
tk.Label(f3, text="Site List").grid(in_=f3, row=0, column=0)
self.sitelist = tk.Listbox(f3)
self.sitelist.grid(in_=f3, row=1, column=0, sticky="NS")
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,框架f3填充了我的根小部件的0,0单元格中的空间,但是Listbox没有填充框架中的所有空间,即使我已经要求它是粘性的"NS".
如果将列表框放在根小部件中的0,0那么它会拉伸并填充所有空间.如果它在框架中,它表现不佳.
任何人都可以解释如何解决这个问题?
我认为使用框架会简化我的布局,但事实并非如此!
干杯.克里斯