我的任务是在 python 中编写一个简单的 MD-Simulation 程序,它不使用 python 内置类型(dict,list),而只使用 numpy 数组。据我了解,这允许编译代码以更快地运行。在我的代码中的某一时刻,我想从一个类似字典的对象中获取原子的质量,该对象可以通过元素名称(如MassDict['N'] = 14.0067
.
根据我的阅读,我需要使用结构化的 numpy 数组。我现在要做的是使用以下表格打开我的文件:
H 1.008
He 4.003
Li 6.941
然后构造一个结构化的numpy数组,可以使用第一列中的元素名称对其进行切片。
我尝试制作两个 numpy 数组,然后将它们连接起来,但这似乎不是我需要的。我的代码一开始看起来并不那么好。那么如何创建一个 numpy 对象,该对象可以最佳地从文本文件中按字符串切片?这是我的代码:
import numpy as np
import re
def mass_el(file):
with open(file) as inf:
for i, line in enumerate(inf):
pass
elements = np.empty((i+1),dtype='S2')
masses = np.empty((i+1),dtype=np.float32)
with open(file) as inf:
for i, line in enumerate(inf):
elements[i] = re.search('[a-zA-Z]+',line).group()
masses[i] = re.search('\d+[.]\d+',line).group()
#???
mass_el('elements.txt')