Python 2.7 Python:将列向量转换为.xyz文件格式
我有一个分子几何的列向量Python 2.7 Python:将列向量转换为.xyz文件格式,python-2.7,Python 2.7,我有一个分子几何的列向量 x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4 x5 y5 z5 x6 y6 z6 x7 y7 z7 x8 y8 z8 我想将其转换为.xyz文件格式: number of atoms comment line C x1 y1 z1 H x2 y2 z2 H x3 y3 z3 C x4 y4 z4 H x5 y5 z5 H x6 y6 z6 O x7 y7 z7 O x8 y8 z8 这容易做到吗?如果很难添加原子类型,那么只需将坐标重新排列
x1
y1
z1
x2
y2
z2
x3
y3
z3
x4
y4
z4
x5
y5
z5
x6
y6
z6
x7
y7
z7
x8
y8
z8
我想将其转换为.xyz文件格式:
number of atoms
comment line
C x1 y1 z1
H x2 y2 z2
H x3 y3 z3
C x4 y4 z4
H x5 y5 z5
H x6 y6 z6
O x7 y7 z7
O x8 y8 z8
这容易做到吗?如果很难添加原子类型,那么只需将坐标重新排列到列中就可以了(至少可以减少手动劳动量)。我不明白字母O、H、C的意思,也不知道如何添加这些信息(我不是化学家)。它们存放在哪里?但是如果你是一名科学家,你可能会使用numpy模块。因此,这里有一个简单的解决方案,可以将行三乘三地转换:
import numpy as np
import csv
#assuming your vector is in a text file
vector = np.genfromtxt('yourfilename.txt',dtype='str')
a = np.array(vector)
a = a.reshape((-1, 3))
print(a)
输出:
[['x1' 'y1' 'z1']
['x2' 'y2' 'z2']
['x3' 'y3' 'z3']
['x4' 'y4' 'z4']
['x5' 'y5' 'z5']
['x6' 'y6' 'z6']
['x7' 'y7' 'z7']
['x8' 'y8' 'z8']]
"""
The output is a list of lists in which each element is a row.
Numpy has a simple method to write a 2D array in a csv file :
np.savetxt("youfilename.csv", a, delimiter=",")
but since I get a bug in this moment, I will use a classical method.
"""
with open("output.csv", "w") as f:
writer = csv.writer(f)
writer.writerows(a)
您的csv文件:
x1,y1,z1
x2,y2,z2
x3,y3,z3
x4,y4,z4
x5,y5,z5
x6,y6,z6
x7,y7,z7
x8,y8,z8
我还需要导入一个包含数字的文本文件(按列向量排序)。“\n”是什么意思?@Yoda\n的意思是“newline”,这是一个与其他字符类似的字符。它们可以被擦除。我将编辑并澄清我的答案。