小编Nic*_*mer的帖子

将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
查看次数

Sympy:从表达式获取函数

要从sympy表达式中获取所有变量,可以调用.free_symbols该表达式。我想检索表达式中使用的所有函数。例如,从y

from sympy import *

f = Function('f')
g = Function('g')

x = Symbol('x')

y = f(x) + 2*g(x)
Run Code Online (Sandbox Code Playgroud)

我想得到fg

有什么提示吗?

python sympy

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

补丁:以非交互模式运行

我想自动测试一组仍然完全适用于(更新的)代码库的补丁。为此,我打算跑

patch -p 1 < path/to/patch0.patch
Run Code Online (Sandbox Code Playgroud)

对于所有补丁patch*.patch,检查此命令的返回码,并将其存储在某处。不幸的是,patch在某些情况下似乎可以交互工作。需要交互的典型输出是

can't find file to patch at input line 44
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: foo/docs/faq.html
|===================================================================
|--- foo.orig/docs/faq.html
|+++ foo/docs/faq.html
--------------------------
File to patch: 
Run Code Online (Sandbox Code Playgroud)

有没有办法patch非交互式运行?(也许patch不是这里任务的正确工具。)

unix linux patch

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

NumPy:选择数据并将其汇总到数组中

我有一个(大)数据数组和(一些)索引列表的(大)列表,例如,

data = [1.0, 10.0, 100.0]
contribs = [[1, 2], [0], [0, 1]]
Run Code Online (Sandbox Code Playgroud)

对于每个条目contribs,我想总结相应的值data并将它们放入一个数组中.对于上面的例子,预期的结果是

out = [110.0, 1.0, 11.0]
Run Code Online (Sandbox Code Playgroud)

在循环中执行此操作,

c = numpy.zeros(len(contribs))
for k, indices in enumerate(contribs):
    for idx in indices:
        c[k] += data[idx]
Run Code Online (Sandbox Code Playgroud)

但由于data而且contribs规模很大,所以需要太长时间.

我觉得使用numpy的花式索引可以改善这一点.

任何提示?

python numpy

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

查找包含任何列表的NumPy数组行

我有一个2D NumPy数组a和一个list/set/1D NumPy数组b.我想找到那些a包含任何一行的行b,即

import numpy as np

a = np.array([
    [1, 2, 3],
    [4, 5, 3],
    [0, 1, 0]
    ])

b = np.array([1, 2])

# result: [True, False, True]
Run Code Online (Sandbox Code Playgroud)

任何提示?

python arrays numpy

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

与 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
查看次数

在 Python 项目中将元信息(__version__ 等)放在哪里?

我有一个带有目录结构的小 Python2/3 项目

superproject/
    ->  __init__.py
    ->  meta.py
setup.py
Run Code Online (Sandbox Code Playgroud)

__init__.py文件包含一堆imports和实际代码,meta有

 __author__ = 'John Doe'
 __author_email__ = 'john@doe.com'
 __version__ = '1.2.3'
 # [...]
Run Code Online (Sandbox Code Playgroud)

我想让元信息在 setup.py(简单:只是import superproject.meta)和superprojectas

import superproject
print(superproject.__version__)
Run Code Online (Sandbox Code Playgroud)

我正在为后一个要求而苦苦挣扎。做的时候

from .meta import *
Run Code Online (Sandbox Code Playgroud)

__init__.py,我只能做

print(superproject.meta.__version__)
Run Code Online (Sandbox Code Playgroud)

例如。

请注意,我不能__init__.py直接将元信息放入,因为我必须import superproject放入setup.py,而且 的众多import依赖项superproject当时尚不可用。

任何提示?

python metadata setup.py

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

SVG currentColor 在 GitHub README 中不起作用?

我正在尝试使 SVG 颜色与 GitHub 自述文件中周围文本的颜色相匹配。(如果将文本设置为"fill=black",则在 GitHub 的深色模式下几乎看不到。)

这里,我认为我可以使用

fill="currentColor"
Run Code Online (Sandbox Code Playgroud)

获取color最近(周围)CSS 元素的属性。我尝试使用显示简单圆圈的 SVG:

fill="currentColor"
Run Code Online (Sandbox Code Playgroud)

SVG 嵌入在 README 中,如下所示

<p align="center">
  <img src="https://nschloe.github.io/smoothfit/disk.svg" width="60%">
</p>
Run Code Online (Sandbox Code Playgroud)

但是,填充颜色始终显示为黑色。

在此输入图像描述

(从这里)。

知道出了什么问题吗?

css svg github

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

创建组合的 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
查看次数