GVKun编程网logo

numexpr:你以为 numpy 已经够快了,其实它还可以更快(numpy速度快的原因)

4

在本文中,我们将给您介绍关于numexpr:你以为numpy已经够快了,其实它还可以更快的详细内容,并且为您解答numpy速度快的原因的相关问题,此外,我们还将为您提供关于"importnumpyas

在本文中,我们将给您介绍关于numexpr:你以为 numpy 已经够快了,其实它还可以更快的详细内容,并且为您解答numpy速度快的原因的相关问题,此外,我们还将为您提供关于"import numpy as np" ImportError: No module named numpy、3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数、Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案、AttributeError:模块'numexpr'没有属性'__version__'的知识。

本文目录一览:

numexpr:你以为 numpy 已经够快了,其实它还可以更快(numpy速度快的原因)

numexpr:你以为 numpy 已经够快了,其实它还可以更快(numpy速度快的原因)

开篇

python语言被广泛用于数据分析和机器学习。但是,由于python的底层特性,python的运行速率低一直被广泛诟病。其中,numpy和pandas的广泛使用已经将数据处理和机器学习的速率提升了几个档次。

但是,随着数据的越来越多,很多人已经不再满足numpy和pandas的速度,从而退出了一批加速优化拓展包。这篇文章主要介绍一个轻量、但是功能强大的python扩展包 ”NumExpr",看看它是如何高效解析数学公式的。

NumExpr

NumExpr的使用及其简单,只需要将原来的numpy语句使用双引号框起来,并使用numexpr中的evaluate方法调用即可。

第一步:需要引入 numexpr 和 numpy 扩展包;

import numexpr as ne

import numpy as np

第二步:创建两个numpy的array - a 和 b;

a和b两个所包含的数据个数为100万个。

当我们需要执行简单的加减乘除的时候,numexpr的效率已经得到了很好地体现。如上图所示,通过执行 2 a + 3 b,如果直接操作,需要3.39 毫秒。但是,如果我们是用ne.evaluate加速,可以将时间缩短至1.55 毫秒。

numexpr在更加复杂的数学表达式运算中,表现到底如何呢?

当我们使用如上所示的数学表达式,正常执行需要28.3 ms。而通过numexpr的加速,只需要3.03 ms。

注意,numexpr是可以识别 sin 函数的,所以我们不需要在evaluate里面写np.sin,可以直接写 sin。

总结:处理数据量越大,数学计算越复杂,则numexpr的加速效果越明显。

numpy 和 numexpr 比较

我们可以看到,当np.array的元素个数超过10e8,加速效果更加显著。

numexpr也支持逻辑表达式和复数表达式的加速,有兴趣的读者朋友可以自行比较。

numexpr 多线程加速

numexpr还有一个重要的加速利器,多线程操作。通过 ne.set_num_threads(1) 可以设置线程的数量,更多的线程表示程序可以同时对数学表达式进行计算。

如上所示,如果我们设置单线程,程序运行需要13.4 ms。设置了双线程,速度则可以提升一倍。

numexpr对pandas的加速

numexpr的设计主要针对的是numpy。同样的,我们知道pandas也是基于numpy开发的。自然,numexpr同样可以被用来对pandas加速。

pandas中有一个eval方法就是运用了numexpr,对pandas代码进行优化加速。

当我们构建几个pandas的dataframe,然后对它们进行运算的时候,pd.eval 可以将程序从原先的47.4 ms 加速到17.6 ms。

总结

通过以上的实例,numexpr对于numpy和pandas的加速是很显著的,尤其当数据量比较大和计算比较复杂的情况下。同时,numexpr的使用非常简单。但是,我们需要注意的是,任何加速工具都会有局限性的,并不是所有的工作都可以使用numexpr进行加速。

看完别走还有惊喜!

我精心整理了计算机/Python/机器学习/深度学习相关的2TB视频课与书籍,价值1W元。关注微信公众号“计算机与AI”,点击下方菜单即可获取网盘链接。

"import numpy as np" ImportError: No module named numpy

问题:没有安装 numpy

解决方法:

下载文件,安装

numpy-1.8.2-win32-superpack-python2.7

安装运行 import numpy,出现

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    import numpy
  File "C:\Python27\lib\site-packages\numpy\__init__.py", line 153, in <module>
    from . import add_newdocs
  File "C:\Python27\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Python27\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "C:\Python27\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "C:\Python27\lib\site-packages\numpy\core\__init__.py", line 6, in <module>
    from . import multiarray
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

原因是:python 装的是 64 位的,numpy 装的是 32 位的

重新安装 numpy 为:numpy-1.8.0-win64-py2.7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数

3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数

目录

[TOC]

前言

具体我们来学 Numpy 的统计函数

(一)函数一览表

调用方式:np.*

.sum(a) 对数组 a 求和
.mean(a) 求数学期望
.average(a) 求平均值
.std(a) 求标准差
.var(a) 求方差
.ptp(a) 求极差
.median(a) 求中值,即中位数
.min(a) 求最大值
.max(a) 求最小值
.argmin(a) 求最小值的下标,都处里为一维的下标
.argmax(a) 求最大值的下标,都处里为一维的下标
.unravel_index(index, shape) g 根据 shape, 由一维的下标生成多维的下标

(二)统计函数 1

(1)说明

(2)输出

.sum(a)

.mean(a)

.average(a)

.std(a)

.var(a)

(三)统计函数 2

(1)说明

(2)输出

.max(a) .min(a)

.ptp(a)

.median(a)

.argmin(a)

.argmax(a)

.unravel_index(index,shape)

作者:Mark

日期:2019/02/11 周一

Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案

Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案

如何解决Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案?

希望有人能在这里提供帮助。我一直在绕圈子一段时间。我只是想设置一个 python 脚本,它将一些 json 数据从 REST API 加载到云数据库中。我在 Anaconda 上设置了一个虚拟环境(因为 GCP 库推荐这样做),安装了依赖项,现在我只是尝试导入库并向端点发送请求。 我使用 Conda(和 conda-forge)来设置环境并安装依赖项,所以希望一切都干净。我正在使用带有 Python 扩展的 VS 编辑器作为编辑器。 每当我尝试运行脚本时,我都会收到以下消息。我已经尝试了其他人在 Google/StackOverflow 上找到的所有解决方案,但没有一个有效。我通常使用 IDLE 或 Jupyter 进行脚本编写,没有任何问题,但我对 Anaconda、VS 或环境变量(似乎是相关的)没有太多经验。 在此先感谢您的帮助!

  \Traceback (most recent call last):
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\__init__.py",line 22,in <module>
from . import multiarray
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\multiarray.py",line 12,in <module>
from . import overrides
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\overrides.py",line 7,in <module>
from numpy.core._multiarray_umath import (
ImportError: DLL load Failed while importing _multiarray_umath: The specified module Could not be found.

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
File "c:\API\citi-bike.py",line 4,in <module>
import numpy as np
File "C:\Conda\envs\gcp\lib\site-packages\numpy\__init__.py",line 150,in <module>
from . import core
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\__init__.py",line 48,in <module>
raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions Failed. This error can happen for
many reasons,often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

* The Python version is: python3.9 from "C:\Conda\envs\gcp\python.exe"
* The NumPy version is: "1.21.1"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: DLL load Failed while importing _multiarray_umath: The specified module Could not be found.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

AttributeError:模块'numexpr'没有属性'__version__'

AttributeError:模块'numexpr'没有属性'__version__'

如何解决AttributeError:模块''numexpr''没有属性''__version__''

尝试导入下面编写的一些模块:

import numpy as np
import os.path
import pandas as pd
import math
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

但是我得到AttributeError:模块''numexpr''没有属性'' version '',我不知道该如何解决。我已经尝试卸载并安装numpy。我在下面添加了完整的错误消息,如果过长,我深表歉意。

AttributeError                            Traceback (most recent call last)
<ipython-input-1-c0202e9c9cc8> in <module>()
      1 import numpy as np
      2 import os.path
----> 3 import pandas as pd
      4 import math
      5 import matplotlib.pyplot as plt

~\\Anaconda3\\lib\\site-packages\\pandas\\__init__.py in <module>()
     40 import pandas.core.config_init
     41 
---> 42 from pandas.core.api import *
     43 from pandas.core.sparse.api import *
     44 from pandas.stats.api import *

~\\Anaconda3\\lib\\site-packages\\pandas\\core\\api.py in <module>()
      8 from pandas.core.dtypes.missing import isnull,notnull
      9 from pandas.core.categorical import Categorical
---> 10 from pandas.core.groupby import Grouper
     11 from pandas.io.formats.format import set_eng_float_format
     12 from pandas.core.index import (Index,CategoricalIndex,Int64Index,~\\Anaconda3\\lib\\site-packages\\pandas\\core\\groupby.py in <module>()
     44 from pandas.core.base import (PandasObject,SelectionMixin,GroupByError,45                               DataError,SpecificationError)
---> 46 from pandas.core.index import (Index,MultiIndex,47                                CategoricalIndex,_ensure_index)
     48 from pandas.core.categorical import Categorical

~\\Anaconda3\\lib\\site-packages\\pandas\\core\\index.py in <module>()
      1 # Flake8: noqa
----> 2 from pandas.core.indexes.api import *
      3 from pandas.core.indexes.multi import _sparsify

~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\api.py in <module>()
----> 1 from pandas.core.indexes.base import (Index,_new_Index,# noqa
      2                                  _ensure_index,_get_na_value,3                                  InvalidindexError)
      4 from pandas.core.indexes.category import CategoricalIndex  # noqa
      5 from pandas.core.indexes.multi import MultiIndex  # noqa

~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py in <module>()
     50 import pandas.core.algorithms as algos
     51 from pandas.io.formats.printing import pprint_thing
---> 52 from pandas.core.ops import _comp_method_OBJECT_ARRAY
     53 from pandas.core.strings import StringAccessorMixin
     54 from pandas.core.config import get_option

~\\Anaconda3\\lib\\site-packages\\pandas\\core\\ops.py in <module>()
     17 from pandas import compat
     18 from pandas.util._decorators import Appender
---> 19 import pandas.core.computation.expressions as expressions
     20 
     21 from pandas.compat import bind_method

~\\Anaconda3\\lib\\site-packages\\pandas\\core\\computation\\__init__.py in <module>()
      8 try:
      9     import numexpr as ne
---> 10     ver = ne.__version__
     11     _NUMEXPR_INSTALLED = ver >= LooseVersion(_MIN_NUMEXPR_VERSION)
     12 

AttributeError: module ''numexpr'' has no attribute ''__version__''

解决方法

前一段时间我遇到了相同的问题,并通过在Ananconda中执行以下操作来解决了该问题:

pip uninstall -y numpy
pip uninstall -y setuptools
pip install setuptools
pip install numpy

如果您使用的是Anaconda3,请使用pip3尝试相同的操作。

今天关于numexpr:你以为 numpy 已经够快了,其实它还可以更快numpy速度快的原因的分享就到这里,希望大家有所收获,若想了解更多关于"import numpy as np" ImportError: No module named numpy、3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数、Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案、AttributeError:模块'numexpr'没有属性'__version__'等相关知识,可以在本站进行查询。

本文标签: