我一直在研究这个函数,它生成了我正在开发的模拟代码所需的一些参数,并且已经在增强其性能方面遇到了障碍.

对代码进行分析表明,这是主要的瓶颈,因此我可以对其进行的任何增强都会很小.

我想尝试对这个函数的部分进行矢量化,但我不确定它是否可行.

主要的挑战是存储在我的数组参数中的参数取决于参数的索引.我看到的唯一直接的解决方案是使用np.ndenumerate,但这看起来很慢.

是否可以对这种类型的操作进行矢量化,其中存储在数组中的值取决于它们存储的位置?或者创建一个只给我数组索引的元组的生成器会更聪明/更快?

import numpy as np

from scipy.sparse import linalg as LA

def get_params(num_bonds,energies):

"""

Returns the interaction parameters of different pairs of atoms.

Parameters

----------

num_bonds : ndarray,shape = (M,20)

Sparse array containing the number of nearest neighbor bonds for

different pairs of atoms (denoted by their column) and next-

nearest neighbor bonds. Columns 0-9 contain nearest neighbors,10-19 contain next-nearest neighbors

energies : ndarray,)

Energy vector corresponding to each atomic system stored in each

row of num_bonds.

"""

# -- Compute the bond energies

x = LA.lsqr(num_bonds,energies,show=False)[0]

params = np.zeros([4,4,4])

nn = {(0,0): x[0],(1,1): x[1],(2,2): x[2],(3,3): x[3],(0,1): x[4],0): x[4],2): x[5],0): x[5],3): x[6],0): x[6],2): x[7],1): x[7],3): x[8],1): x[8],3): x[9],2): x[9]}

nnn = {(0,0): x[10],1): x[11],2): x[12],3): x[13],1): x[14],0): x[14],2): x[15],0): x[15],3): x[16],0): x[16],2): x[17],1): x[17],3): x[18],1): x[18],3): x[19],2): x[19]}

"""

params contains the energy contribution of each site due to its

local environment. The shape is given by the number of possible atom

types and the number of sites in the lattice.

"""

for (i,j,k,l,m,jj,kk,ll,mm),val in np.ndenumerate(params):

params[i,mm] = nn[(i,j)] + nn[(i,k)] + nn[(i,l)] + \

nn[(i,m)] + nnn[(i,jj)] + \

nnn[(i,kk)] + nnn[(i,ll)] + nnn[(i,mm)]

return np.ascontiguousarray(params)

python把文字矢量化_这个python函数可以被矢量化吗?相关推荐

  1. python把文字矢量化_如何将点阵汉字矢量化 | indienova

    那么是不是点阵汉字就已经退出历史舞台了呢?并没有.现在街上能常常见到的简易 LED 屏,很多都还是用的点阵汉字.很多工控或者简易屏幕上,也都还在使用点阵汉字,这是因为同矢量字体相比,点阵汉字占用的空间 ...

  2. python数据统计 矢量图_用python中的矢量化解决方案计算max draw down

    Maximum Drawdown是量化金融中常用的一种风险度量,用于评估所经历的最大负收益. 最近,我变得不耐烦的时间来计算最大下降使用我的循环方法.def max_dd_loop(returns): ...

  3. python图像识别生成矢量图_使用python制作矢量图

    Get一个使用python制作矢量图的新技能: 前言: Matplotlib远比我们想象的强大,而这只是众多python强大的包中的一个,不愧是群英荟萃. 绘图后端我们一般是看不见的,matplotl ...

  4. python实现文字转语音_利用python实现自己的文本转语音

    1.安装python3.8.5 python   >>  downloads   >>   windows    >>  Windows x86-64 execut ...

  5. python输入文字垂直输出_在python中如何将横向输入的中文竖直输出

    s.strip('.').split(',') 去掉最后的句号,然后以逗号为分隔符,把句子分开,存到一个list当中.执行完成后, lines=['白日依山尽', '黄河入海流', '欲穷千里目', ...

  6. python图片矢量化_图像处理tas的Python矢量化

    我在用python3(这个特定任务的NumPy)自学彩色图像处理.在 我有一个3d张量,代表图像中每个像素的RGB值,所以它的形状是(高,宽,3).在每个像素处,我要生成新的RGB值,这些值是给定像素 ...

  7. Python中将数据矢量化运算所带来的时间加快

    ➤01 矢量化运算 在<PaddlePaddle深度学习实战>一书中,介绍了在Python中利用Numpy中的矩阵(矢量)运算所带来的速度增加. ▲ PaddlePaddle深度学习实战 ...

  8. python音频转文字腾讯_使用Python三步完成文本到语音的转换

    重磅干货,第一时间送达 一篇文章带你了解文本到语音转换步骤 在<这篇文章>中,我们有简单提到"文本语音转换"的相关内容,本文将继续讲述其详细实现步骤. 这里小编将介绍文 ...

  9. python保存图片到指定路径_用 Python 识别图片中的文字

    (给Python开发者加星标,提升Python技能) 来源:ZackSock 一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度 ...

最新文章

  1. Lua保留指定小数位数
  2. mysql能安装的版本下载失败_mysql 安装失败 每次都安装失败 每个版本都失败
  3. 【机器学习基础】机器学习的损失函数小结
  4. 什么可以搜python答案_什么软件可以搜python答案
  5. 《黑书》hdu1271递推习题:整数对
  6. kafka mysql事务_【干货】Kafka 事务特性分析
  7. Codeforces Round #299 (Div. 2) D. Tavas and Malekas kmp
  8. Xamarin截取/删除emoji表情bug解决方案
  9. 信息学奥赛一本通 1193:吃糖果 | OpenJudge NOI 2.6 1944:吃糖果
  10. JavaScript 编程精解 中文第三版 十二、项目:编程语言
  11. ————————C语言中快速排序方法——————————————
  12. stm32端口复用和重映射
  13. java获取上传图片的大小_java 图片上传的处理,获取图片大小,宽高。
  14. 基于信息熵确立权重的topsis法_一种基于加权秩和比法的光伏并网逆变器多性能指标评价方法研究...
  15. Weex第一天:公共样式
  16. 202000 - AlphaGo如何进化为孤独求败?
  17. 杰里之2M 包加入来电铃声和来电报号的问题【篇】
  18. 什么是反射 反射怎么用
  19. 盘点程序员可以在上面捡钱的共享经济产品
  20. 探索新时代的进货渠道突破口,快速脱颖而出

热门文章

  1. pip3 install numpy
  2. android 蓝牙 不休眠_全新便携蓝牙键盘 雷柏XK100带来高效办公新体验
  3. ubuntu windows 终端清理、清空 屏幕命令 清屏
  4. 什么是CMU Pronoucing Dictionary(CMU发音词典)
  5. HashTable 使用例子
  6. python tqdm添加进度条
  7. 时间同步软件 windows_电脑便签设置事件时间提醒软件哪个好用
  8. sqlite java excel,Android将Excel表数据导入SQLite数据库
  9. SynchronizedMap和ConcurrentHashMap有什么区别
  10. Spring Boot注入自定义properties文件配置