小编nic*_*oco的帖子

将mask(boolean)数组转换为x,y坐标列表

我有一个'mask'(布尔)2D数组,我想把它转换成一个坐标列表.什么是适当的numpythonic方式呢?

输入将是这样的:

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

并给出上述输入,输出应为:

[(0,2),(1,1)]
Run Code Online (Sandbox Code Playgroud)

python numpy

8
推荐指数
1
解决办法
1667
查看次数

删除一个字符的单词

我正在寻找一个正则表达式删除一个字符单词.我不介意是否使用perl,awk,sedbash内置插件.

测试用例:

$ echo "a b c d e f g h ijkl m n opqrst u v" | $COMMAND
Run Code Online (Sandbox Code Playgroud)

期望的输出:

ijkl opqrst
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

$ echo "a b c d e f g h ijkl m n opqrst u v" | sed 's/ . //g'
acegijkln opqrstv
Run Code Online (Sandbox Code Playgroud)

我猜是这样的:

  • a不会被删除,因为有之前没有空格
  • c遗体因为一旦b已被删除,有之前没有更多的空白
  • 等等...

尝试#2:

$ echo "a b c d e f g h ijkl m n opqrst …
Run Code Online (Sandbox Code Playgroud)

regex bash perl awk sed

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

使用slice()切片而没有停止值

是否有[:]使用python的内置slice类的等价物?

In [8]: 'abcdef'[:3]
Out[8]: 'abc'

In [9]: 'abcdef'[slice(3)]
Out[9]: 'abc'

In [10]: 'abcdef'[:]
Out[10]: 'abcdef'

In [11]: 'abcdef'[slice()]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-9afb03fec62a> in <module>()
----> 1 'abcdef'[slice()]

TypeError: slice expected at least 1 arguments, got 0
Run Code Online (Sandbox Code Playgroud)

python

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

从 argwhere 到哪里?

有没有一种快速方法可以在 where 格式的输出中获取 argwhere 的输出?

让我向您展示我正在用一些代码做什么:

In [123]: filter = np.where(scores[:,:,:,4,:] > 21000)

In [124]: filter
Out[124]: 
(array([ 2,  2,  4,  4,  4,  4,  4,  4,  4,  4,  4, 23, 23, 23, 23, 23]),
 array([13, 13,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  5]),
 array([0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2]),
 array([44, 44,  0,  1,  2,  3,  6,  8, 12, 14, 22, 31, 58, 76, …
Run Code Online (Sandbox Code Playgroud)

python numpy

2
推荐指数
1
解决办法
2985
查看次数

在没有大量内存分配的情况下,cython 的 prange 中的线程本地数组

我有一些我想使用 Cython 并行执行的独立计算。

现在我正在使用这种方法:

import numpy as np
cimport numpy as cnp
from cython.parallel import prange

[...]

cdef cnp.ndarray[cnp.float64_t, ndim=2] temporary_variable = \
    np.zeros((INPUT_SIZE, RESULT_SIZE), np.float64)
cdef cnp.ndarray[cnp.float64_t, ndim=2] result = \
    np.zeros((INPUT_SIZE, RESULT_SIZE), np.float64)

for i in prange(INPUT_SIZE, nogil=True):
    for j in range(RESULT_SIZE):
        [...]
        temporary_variable[i, j] = some_very_heavy_mathematics(my_input_array)
        result[i, j] = some_more_maths(temporary_variable[i, j])
Run Code Online (Sandbox Code Playgroud)

这种方法有效,但我的问题来自事实上我需要几个temporary_variables。这会在增长时导致大量内存使用INPUT_SIZE。但我相信真正需要的是每个线程中的临时变量。

我是否面临 Cython 的恶作剧的限制,我是否需要学习正确的 C 语言,或者我是否在做/理解一些非常错误的事情?

编辑:我一直在寻找的功能都openmp.omp_get_max_threads()openmp.omp_get_thread_num()创建合理大小的临时数组。我必须cimport openmp先。

multithreading memory-management numpy cython gil

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

标签 统计

numpy ×3

python ×3

awk ×1

bash ×1

cython ×1

gil ×1

memory-management ×1

multithreading ×1

perl ×1

regex ×1

sed ×1