小编Bza*_*azz的帖子

Parfor for Python

我正在寻找一个确定的答案MATLAB的parfor for Python(Scipy,Numpy).

有没有类似于parfor的解决方案?如果没有,创建一个的复杂性是什么?

更新:这是我需要加速的典型数值计算代码

import numpy as np

N = 2000
output = np.zeros([N,N])
for i in range(N):
    for j in range(N):
        output[i,j] = HeavyComputationThatIsThreadSafe(i,j)
Run Code Online (Sandbox Code Playgroud)

重计算函数的一个例子是:

import scipy.optimize

def HeavyComputationThatIsThreadSafe(i,j):
    n = i * j

    return scipy.optimize.anneal(lambda x: np.sum((x-np.arange(n)**2)), np.random.random((n,1)))[0][0,0]
Run Code Online (Sandbox Code Playgroud)

python parallel-processing matlab

47
推荐指数
4
解决办法
3万
查看次数

Cython尝试编译两次,然后失败

我有一个setup.py与此处显示的文件非常相似的文件:https://stackoverflow.com/a/49866324/4080129.它看起来像这样:

from distutils.core import setup, Extension
from Cython.Build import cythonize
import numpy

sources = ["hs/detection_localisation/detect.pyx",
           "hs/detection_localisation/SpkDonline.cpp",
           "hs/detection_localisation/SpikeHandler.cpp",
           "hs/detection_localisation/ProcessSpikes.cpp",
           "hs/detection_localisation/FilterSpikes.cpp",
           "hs/detection_localisation/LocalizeSpikes.cpp"]

exts = [Extension(name='hs.detect',
                  sources=sources,
                  extra_compile_args=['-std=c++11', '-O3'],
                  include_dirs=[numpy.get_include()])]

setup(
    ext_modules=cythonize(exts),
    include_dirs=[numpy.get_include()]
)
Run Code Online (Sandbox Code Playgroud)

有一个包含一些纯Python的包,以及一个包含Cython文件的子模块.该setup.py是在父文件夹,而不是在用Cython之一:

setup.py
hs/
    some_python.py
    detection_localisation/
        detect.pyx
        SpkDonline.cpp
        ...etc
Run Code Online (Sandbox Code Playgroud)

现在,setup.py正确编译所有文件module/submodule/file1.cpp等,并将构建保存到build/temp.linux-x86_64-3.6/module/submodule/file1.o.然而,就在此之后,它尝试编译一个名为的文件file1.cpp,该文件不存在(正确的文件module/submodule/file1.cpp已被编译).

gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Ihs/detection_localisation -I/disk/scratch/mart/Clustering/HS2/HS2venv/lib/python3.6/site-packages/numpy/core/include -I/disk/scratch/mart/Clustering/HS2/HS2venv/lib/python3.6/site-packages/numpy/core/include -I/disk/scratch/martino/Clustering/HS2/HS2venv/include -I/disk/scratch/miniconda/envs/my_default/include/python3.6m -c SpkDonline.cpp -o build/temp.linux-x86_64-3.6/SpkDonline.o -std=c++11 -O3
gcc: error: …
Run Code Online (Sandbox Code Playgroud)

python compilation cython setup.py

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

如何使用matplotlib在单独的图形上创建多个直方图?

我有5个数据集,我想从中创建5个独立的直方图.目前他们都在一张图上.如何更改它以便生成两个单独的图形?

为简单起见,在下面的示例中,我只显示了两个直方图.我正在看a3个不同时间的角度分布和角度相同的角度b.

n, bins, patches = plt.hist(a)
plt.xlabel('Angle a (degrees)') 
plt.ylabel('Frequency')
n, bins, patches = plt.hist(b)
label='2pm,3pm,4pm'
loc = 'center'
plt.legend(label, loc)

plt.xlabel('Angle b(degrees)')        
plt.title('Histogram of b')
plt.ylabel('Frequency')
label='2pm,3pm,4pm'
loc = 'center'
plt.legend(label, loc)

plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram enthought canopy

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

Ipython3 和 Ipython2 冲突

在 Ubuntu 15.04 上,我正确安装了 ipython2 并使用笔记本,条件是我将“/usr/local/lib/python2.7/dist-packages”添加到 PYTHONPATH。

现在,我安装了 python3 和 ipython3。ipython3 notebook完美运行(前提是我从 pythonpath 中删除了上述引用)。但ipython2 notebook返回

Could not start notebook. Please install ipython-notebook
Run Code Online (Sandbox Code Playgroud)

不管 PYTHONPATH。

我在 /usr/bin/ 中安装了 python2 和 python3,在 /usr/local/bin 中安装了 ipython2 和 ipython3。ipythons 与 pip 和 pip3 一起安装。

现在,如果我确实安装了ipython-notebook,它会在 /usr/bin 中安装(我认为)另一个 ipython,这也不起作用。

这有点令人困惑,换句话说,我有一堆乱七八糟的 Python 发行版。下次我应该使用 anaconda 时,我知道。但目前我想坚持这一点。我如何使它工作?

python ubuntu ipython ipython-notebook

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