以上代码运行结果为什么是x坐标相同的原子个数: [] y坐标相同的原子个数: [] z坐标相同的原子个数: [],结果是空的。import numpy as np from ase.io import read # 读取POSCAR或cif文件 atoms = read('POSCAR') # 获取C原子坐标 C_coords = atoms.get_positions()[atoms.get_chemical_symbols() == 'C'] # 计算x坐标相同的原子个数 x_counts = np.unique(C_coords[:, 0], axis=0, return_counts=True)[1] # 计算y坐标相同的原子个数 y_counts = np.unique(C_coords[:, 1], axis=0, return_counts=True)[1] # 计算z坐标相同的原子个数 z_counts = np.unique(C_coords[:, 2], axis=0, return_counts=True)[1] print('x坐标相同的原子个数:', x_counts) print('y坐标相同的原子个数:', y_counts) print('z坐标相同的原子个数:', z_counts)
时间: 2024-03-04 13:54:10 浏览: 60
Writefilament:从 imaris filament 函数写入 x,y,z 坐标-matlab开发
这段代码的输出结果为空可能是因为没有找到符合筛选条件的C原子坐标。你可以添加一些调试代码来检查程序的正确性,比如在计算C原子坐标前先输出一下atoms对象来检查是否成功读取了POSCAR文件。或者在计算完C_coords后,输出一下C_coords的形状和内容,看看是否正确获取了符合条件的C原子坐标。另外,如果POSCAR文件中不包含C原子,那么程序也会输出空结果。
阅读全文