小编Nic*_*mer的帖子

Ansible:强制执行管道故障

今天早些时候,我们遇到了一个由以下 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 pipefailset -e. 是否有可能在 ansible 中做到这一点,最好是对我的所有shell命令全局进行?

error-handling bash shell pipe ansible

5
推荐指数
1
解决办法
2591
查看次数

从稀疏数据创建PNG图像

我想在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

5
推荐指数
1
解决办法
584
查看次数

匹配"abc","d,e","",",f"`与组

我想正则表达式匹配字符串

"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)

会做的伎俩.但是,它只匹配abcd,e.

在regex101上创建了一个玩具示例来显示行为.

任何提示?

regex

5
推荐指数
1
解决办法
80
查看次数

OpenGL:使用GL_QUADS或GL_TRIANGLES更有效吗?

我知道OpenGL已弃用,并在新版本中删除了GL_QUADS.我听说这是因为现代GPU只用三角形渲染,所以调用四边形只会让GPU更难将它分成两个三角形(我听说无论如何,我不是任何一个专家这个话题).

我想知道它是否更好(假设一般人的CPU比他们的GPU更快,相对而言)只是手动将四边形渲染成两个三角形,或者让GPU自己做.再说一遍,我刚刚开始时,我对OpenGL没有真正的经验.我宁愿知道这些天大多数机器哪个更好,所以我可以把注意力集中在渲染方法*上.谢谢.

*然而,为了它,我可能会使用'三角法'.

opengl geometry gpu

4
推荐指数
1
解决办法
8423
查看次数

将4位整数转换为布尔列表

我有一个整数,我知道它在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)

我怎样才能做到最好?

python integer boolean bit

4
推荐指数
1
解决办法
2992
查看次数

与 einsum 的叉积

我正在尝试尽快计算许多 3x1 向量对的叉积。这

\n\n\n\n
n = 10000\na = np.random.rand(n, 3)\nb = np.random.rand(n, 3)\nnumpy.cross(a, b)\n
Run Code Online (Sandbox Code Playgroud)\n\n

给出了正确的答案,但受到类似问题的答案的启发,我认为这einsum会让我有所收获。我发现两者

\n\n\n\n
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)\n
Run Code Online (Sandbox Code Playgroud)\n\n

计算叉积,但它们的性能令人失望:两种方法的性能都比np.cross

\n\n
%timeit np.cross(a, b)\n1000 loops, best of 3: 628 \xc2\xb5s per loop\n
Run 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 performance numpy cross-product numpy-einsum

4
推荐指数
2
解决办法
2297
查看次数

从文件的一部分快速读取格式化的数据(Gmsh网格格式)

我维护了一个小小的Python包,该可以在用于网格表示的不同格式之间进行转换

在此处输入图片说明

这些文件可能会变得很大,因此在使用Python读取文件时,有效地执行操作非常重要。

其中一个最常用的格式是MSHGMSH。不幸的是,它的数据布局可以说不是最好的。一个示例文件:

$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)是要跟随的节点数。

    在每个节点行中,第一个数字是索引 …

python io numpy mesh

4
推荐指数
2
解决办法
1204
查看次数

从索引数组的函数返回等效的`:`

我有一个大型数组和一个将索引列表返回到数组中的函数,即

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作为整个数组的索引?

python arrays numpy

4
推荐指数
2
解决办法
141
查看次数

python cProfile/snakeviz 无法处理调用同一函数的多个函数

我在解释数据时遇到问题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)

蛇可视化结果

python cprofile

4
推荐指数
1
解决办法
2203
查看次数

创建组合的 numpy 数组,无需显式循环/理解

我有一个很长的 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

有任何想法吗?

python numpy matrix

4
推荐指数
1
解决办法
101
查看次数