计算距离R到xyz数据文件



我正试图使用。xyz文件,我已经把它打开并读取文件。我需要计算r(距离)对于每一行xyz数据(通过r^2 = x^2+y^2+z^2)然而,我未能在一行中分隔每个xyz值,因为它将数据识别为单列ex([-3.657420e-01 -1.434236e+00 1.086713e+00])是单行,理想情况下它应该由x,y,z值分隔。

我将脚本附加到打开/显示xyz文件和示例输出。谁能帮我计算每一行数据的"r"?

谢谢

import numpy as np
filename = "lj-0200.xyz"
xyz_file = np.genfromtxt(fname=filename,skip_header=2,dtype='unicode')
xyz = open(filename)
atom_coordinates = (xyz_file[:,1:])
atom_coordinates = atom_coordinates.astype(float)
atom_quantity = int(xyz.readline())
title = xyz.readline()
print("Input filename is",filename, "Title is", title,"There are",atom_quantity,"atoms in this file")
print(atom_coordinates)

输出
Input filename is lj-0200.xyz Title is A Box of Atoms
There are 200 atoms in this file
[[-3.657420e-01 -1.434236e+00  1.086713e+00]
[ 1.758085e+00 -2.733505e+00 -4.553970e-01]
[-2.777260e+00  8.659730e-01 -9.788090e-01]
[-8.509290e-01  8.053680e-01 -1.050607e+00]
[ 4.697280e-01 -1.262455e+00  1.770134e+00]
[ 1.776954e+00  2.284919e+00  2.691217e+00]
[ 1.564369e+00  2.100387e+00 -3.898060e-01]
[ 2.153646e+00  1.233546e+00  1.145661e+00]
[ 2.373994e+00  2.372510e+00  1.522204e+00]...

在这里阅读Numpy索引文档

r = np.linalg.norm(atom_coordinates, axis= 1)

最新更新