python数组的乘法_在Python中乘法非常大的2D数组

我必须在Python中将非常大的2D数组乘以大约100次.每个矩阵由32000×32000元素组成.

我正在使用np.dot(X,Y),但是每次乘法都需要很长时间…在我的代码实例下面:

import numpy as np

X = None

for i in range(100)

multiplying = True

if X == None:

X = generate_large_2darray()

multiplying = False

else:

Y = generate_large_2darray()

if multiplying:

X = np.dot(X, Y)

还有其他方法快得多吗?

更新资料

这是显示htop界面的屏幕截图.我的python脚本仅使用一个内核.同样,在3h25m之后,仅完成了4次乘法.

更新2

我尝试执行:

import numpy.distutils.system_info as info

info.get_info('atlas')

但我收到了:

/home/francescof/.local/lib/python2.7/site-packages/numpy/distutils/system_info.py:564: UserWarning: Specified path /home/apy/atlas/lib is invalid. warnings.warn('Specified path %s is invalid.' % d) {}

因此,我认为它的配置不正确.

反之亦然,关于blas,我只收到{},没有任何警告或错误.

解决方法:

正如ali_m所建议的那样,使用BLAS库可以加快操作速度.但是,我系统中的问题是numpy的配置错误.解决方法如下:

1)确保具有所有必需的库(可以使用ATLAS,OpenBLAS等).自从在Ubuntu中直接受支持以来,我选择了ATLAS.

sudo apt-get install libatlas3gf-base libatlas-base-dev libatlas-dev

2)删除所有以前的numpy安装,例如pypm卸载numpy(如果您使用ActivePython安装了它)

3)使用pip重新安装numpy:pip install numpy

4)确保地图集正确链接:

import numpy.distutils.system_info as info

info.get_info('atlas')

ATLAS version 3.8.4 built by buildd on Sat Sep 10 23:12:12 UTC 2011:

UNAME : Linux crested 2.6.24-29-server #1 SMP Wed Aug 10 15:58:57 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

INSTFLG : -1 0 -a 1

ARCHDEFS : -DATL_OS_Linux -DATL_ARCH_HAMMER -DATL_CPUMHZ=1993 -DATL_USE64BITS -DATL_GAS_x8664

F2CDEFS : -DAdd_ -DF77_INTEGER=int -DStringSunStyle

CACHEEDGE: 393216

F77 : gfortran, version GNU Fortran (Ubuntu/Linaro 4.6.1-9ubuntu2) 4.6.1

F77FLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -Wa,--noexecstack -fPIC -m64

SMC : gcc, version gcc (Ubuntu/Linaro 4.6.1-9ubuntu2) 4.6.1

SMCFLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -Wa,--noexecstack -fPIC -m64

SKC : gcc, version gcc (Ubuntu/Linaro 4.6.1-9ubuntu2) 4.6.1

SKCFLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -Wa,--noexecstack -fPIC -m64

{'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'], 'library_dirs': ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base'], 'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')], 'language': 'f77', 'include_dirs': ['/usr/include/atlas']}

标签:performance,matrix,arrays,python,numpy

来源: https://codeday.me/bug/20191121/2052699.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值