今天早些时候,我们遇到了一个由以下 shell 管道引起的严重问题:
- name: get remote branches
shell: git ls-remote -h git@bitbucket.org:orga/repo.git | sed 's_.*refs/heads/__g'
register: branches_remote
Run Code Online (Sandbox Code Playgroud)
该git命令失败,而是整个管道的返回码为0。这是默认的bash / sh的行为。
要解决此问题,在 sh/bash 中,您可以set -o pipefail或set -e. 是否有可能在 ansible 中做到这一点,最好是对我的所有shell命令全局进行?
我想在Python中存储PNG图像,其中RGB值由列表给出
entries = [
[1, 2, [255, 255, 0]],
[1, 5, [255, 100, 0]],
[2, 5, [0, 255, 110]],
# ...
]
Run Code Online (Sandbox Code Playgroud)
(行,列,RGB三元组),以及[255, 255, 255]有关图像总尺寸的默认值和信息.
使用PIL,我当然可以转换entries为密集的m-by n-by- 3matrix,但这不适合内存; 矩阵维数可以在万里.
是否有其他方法可以使用上述信息创建PNG图像?
python png image-processing sparse-matrix python-imaging-library
我想正则表达式匹配字符串
"abc", "d,e" , "", ",f"
Run Code Online (Sandbox Code Playgroud)
这样,组abc,d,e``和 ,f(没有引号)是分开匹配的.
随着小组
"([^"]*)"
Run Code Online (Sandbox Code Playgroud)
匹配这些"abc"位,我假设正则表达式
(?:\s*"([^"]*)"\s*,)\s*"([^"]*)"\s*
Run Code Online (Sandbox Code Playgroud)
会做的伎俩.但是,它只匹配abc和d,e.
任何提示?
我知道OpenGL已弃用,并在新版本中删除了GL_QUADS.我听说这是因为现代GPU只用三角形渲染,所以调用四边形只会让GPU更难将它分成两个三角形(我听说无论如何,我不是任何一个专家这个话题).
我想知道它是否更好(假设一般人的CPU比他们的GPU更快,相对而言)只是手动将四边形渲染成两个三角形,或者让GPU自己做.再说一遍,我刚刚开始时,我对OpenGL没有真正的经验.我宁愿知道这些天大多数机器哪个更好,所以我可以把注意力集中在渲染方法*上.谢谢.
*然而,为了它,我可能会使用'三角法'.
我有一个整数,我知道它在0到15之间,即可以用4位表示.我想将该数组的位表示作为布尔数组,即
0: [False, False, False, False],
1: [True, False, False, False],
2: [False, True, False, False],
# [...]
15: [True, True, True, True]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到最好?
我正在尝试尽快计算许多 3x1 向量对的叉积。这
\n\n\n\nn = 10000\na = np.random.rand(n, 3)\nb = np.random.rand(n, 3)\nnumpy.cross(a, b)\nRun Code Online (Sandbox Code Playgroud)\n\n给出了正确的答案,但受到类似问题的答案的启发,我认为这einsum会让我有所收获。我发现两者
eijk = np.zeros((3, 3, 3))\neijk[0, 1, 2] = eijk[1, 2, 0] = eijk[2, 0, 1] = 1\neijk[0, 2, 1] = eijk[2, 1, 0] = eijk[1, 0, 2] = -1\n\nnp.einsum(\'ijk,aj,ak->ai\', eijk, a, b)\nnp.einsum(\'iak,ak->ai\', np.einsum(\'ijk,aj->iak\', eijk, a), b)\nRun Code Online (Sandbox Code Playgroud)\n\n计算叉积,但它们的性能令人失望:两种方法的性能都比np.cross:
%timeit np.cross(a, b)\n1000 loops, best of 3: 628 \xc2\xb5s per loop\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n%timeit np.einsum(\'ijk,aj,ak->ai\', eijk, a, b)\n100 loops, …Run Code Online (Sandbox Code Playgroud) 我维护了一个小小的Python包,该包可以在用于网格表示的不同格式之间进行转换
这些文件可能会变得很大,因此在使用Python读取文件时,有效地执行操作非常重要。
其中一个最常用的格式是MSH从GMSH。不幸的是,它的数据布局可以说不是最好的。一个示例文件:
$MeshFormat
2.2 0 8
$EndMeshFormat
$Nodes
8
1 -0.5 -0.5 -0.5
2 0.5 -0.5 -0.5
3 -0.5 0.5 -0.5
4 0.5 0.5 -0.5
5 -0.5 -0.5 0.5
6 0.5 -0.5 0.5
7 -0.5 0.5 0.5
8 0.5 0.5 0.5
$EndNodes
$Elements
2
1 4 2 1 11 1 2 3 5
2 4 2 1 11 2 5 6 8
$EndElements
Run Code Online (Sandbox Code Playgroud)
对于$Nodes:
第一个数字(8)是要跟随的节点数。
在每个节点行中,第一个数字是索引 …
我有一个大型数组和一个将索引列表返回到数组中的函数,即
import numpy
n = 500
a = numpy.random.rand(n)
def get_idx(k):
# More complicated in reality
return range(n) if k > 6 else range(k)
data = a[get_idx(29)]
data = a[get_idx(30)]
# ...
Run Code Online (Sandbox Code Playgroud)
一个典型的例子是范围是整个数组range(n).不幸的是,a[range(n)]随着n时间的缩放a[:]当然是恒定时间.这是一个不能返回可惜:的get_idx.
我可以返回什么get_idx作为整个数组的索引?
我在解释数据时遇到问题cProfile。为了向您展示我的问题,我创建了这个简单的脚本。
函数 D 调用 B 和 C,它们都调用 A。
函数 A 显然占用了 1 秒(+开销)。
如果我们查看蛇形可视化结果,您会发现报告有点奇怪。我知道函数 A 总共花费了 2 秒,但在函数 C 内,函数 A 只花费了 1 秒,这就是我感兴趣的。有谁知道是否有一个设置(或不同的查看器)在其中我的没有这个问题吗?
import time
import cProfile
def A():
time.sleep(1)
def B():
A()
def C():
A()
def D():
B()
C()
cProfile.run('D()','profileResults.prf')
Run Code Online (Sandbox Code Playgroud)
我有一个很长的 NumPy 数组,我需要将其组织为“模式”,如下所示:
import numpy as np
# long array:
a = np.array(
[
1.3,
-1.8,
0.3,
11.4,
# ...
]
)
def pattern(x: float):
return np.array(
[
[x, 0, 0],
[0, x, 0],
[0, 0, x],
[+x, +x, +x],
[-x, -x, -x],
]
)
out = np.array([pattern(x) for x in a])
print(out.shape)
Run Code Online (Sandbox Code Playgroud)
(4, 5, 3)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以在out 不显式循环的情况下进行构造a。
有任何想法吗?