标签: pythran

将数组排序到由索引数组指定的 bin 的最有效方法?

任务举例:

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
idx  = np.array([2, 0, 1, 1, 2, 0, 1, 1, 2])
Run Code Online (Sandbox Code Playgroud)

预期结果:

binned = np.array([2, 6, 3, 4, 7, 8, 1, 5, 9])
Run Code Online (Sandbox Code Playgroud)

约束:

  • 应该很快。

  • 应该是O(n+k)其中 n 是数据的长度,k 是 bin 的数量。

  • 应该是稳定的,即保留 bin 内的顺序。

明显的解决方案

data[np.argsort(idx, kind='stable')]
Run Code Online (Sandbox Code Playgroud)

O(n log n)

O(n+k) 解决方案

def sort_to_bins(idx, data, mx=-1):
    if mx==-1:
        mx = idx.max() + 1
    cnts = np.zeros(mx + 1, int)
    for i in range(idx.size):
        cnts[idx[i] …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy pandas pythran

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

是否有可能/如何获取在 python 上运行 pythran 生成的 C++ 代码

Pythran 是 Python 到 C++ 的编译器,用于包含部分 numpy 支持的 Python 子集。它的作用有点像 Numba 和 Cython——你注释一个函数的参数,然后它接管进一步的类型注释和代码专门化。它利用了矢量化的可能性和基于 OpenMP 的并行化的可能性。

在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 C++...

可以这样做吗?如果我想使用的函数依赖于另一个函数怎么办?如果其他函数是从单独的模块导入的怎么办?是否有此类过程的示例/教程?

python code-translation pythran

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

如何在Julia中加速多个广播

这个Julia函数似乎效率很低(比同等的Pythran/C++代码慢一个数量级,即使在Julia热身之后)......

function my_multi_broadcast(a)
    10 * (2*a.^2 + 4*a.^3) + 2 ./ a
end

arr = ones(1000, 1000)
my_multi_broadcast(arr)
Run Code Online (Sandbox Code Playgroud)

我想这只是我没有正确地写出来......如何在朱莉娅加速这样的"多重广播"?我想/希望我不需要花费循环......

在第一个答案后编辑

谢谢!通过我的设置,Pythran解决方案(就地和不合适)仍然快1.5到2倍(没有OpenMP).有没有办法在Julia中激活SIMD指令?或者另一种加速这种CPU计算的方法?

Python代码:

from transonic import jit

@jit
def broadcast(a):
    return 10 * (2*a**2 + 4*a**3) + 2 / a

@jit
def broadcast_inplace(a):
    a[:] = 10 * (2*a**2 + 4*a**3) + 2 / a
Run Code Online (Sandbox Code Playgroud)

@simd建议后编辑

似乎@simd开箱即用,即只是在行的开头添加它.

ERROR: LoadError: LoadError: Base.SimdLoop.SimdError("for loop expected")
Stacktrace:
 [1] compile(::Expr, ::Bool) at ./simdloop.jl:54
 [2] @simd(::LineNumberNode, ::Module, ::Any) at ./simdloop.jl:126
 [3] include at ./boot.jl:317 …
Run Code Online (Sandbox Code Playgroud)

julia pythran

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

标签 统计

pythran ×3

python ×2

code-translation ×1

julia ×1

numpy ×1

pandas ×1

scipy ×1