我有以下代码,允许我通过输入.csv文件的x,y,z坐标来计算径向分布函数
import numpy as np
from RDF import RDF
import pandas as pd
# Particle setup
L = 21.1632573 #Cube side lenght
num_particles = 8000 #Number of Particles
# Calculation setup
dr = 0.1
### Parameters ###
particle_radius = 1
rMax = 10
#Import Data
x_data = pd.read_csv("test_1.csv", header=1,usecols=[0]).values
y_data = pd.read_csv("test_1.csv", header=1,usecols=[1]).values
z_data = pd.read_csv("test_1.csv", header=1,usecols=[2]).values
#Obtain float values for x,y,z
x = x_data.ravel()
y = y_data.ravel()
z = z_data.ravel()
# Compute pair correlation
g_r, r, reference_indices = RDF(x, y, z, L, rMax, dr)
现在,函数RDF仅从单个.csv文件(“ test_1.csv”)获取输入值x,y,z。但是,在同一个文件夹中,我有多个.csv文件(“ test _ *。csv”),我想为其提取x,y,z坐标并将其输入到RDF函数中。我的最终目标是获取g_r数组并为目录中的每个“ test_ * csv”文件指定r,这样我就可以对其进行一些统计(平均值,标准偏差等)。
我能够使用以下代码循环遍历目录中的每个文件:
filenames = sorted(glob.glob('test*.csv'))
for f in filenames:
x_data = pd.read_csv(f, header=None,usecols=[0]).values
y_data = pd.read_csv(f, header=None,usecols=[1]).values
z_data = pd.read_csv(f, header=None,usecols=[2]).values
x = x_data.ravel()
y = y_data.ravel()
z = z_data.ravel()
但是,我现在停留在如何通过所有数据坐标循环功能RDF并获得不同的g_r和r的问题上。
答案 0 :(得分:0)
您只需要对每个xyz数据应用RDF功能:
g_r_list, r_list = [], []
filenames = sorted(glob.glob('test*.csv'))
for f in filenames:
x_data = pd.read_csv(f, header=None,usecols=[0]).values
y_data = pd.read_csv(f, header=None,usecols=[1]).values
z_data = pd.read_csv(f, header=None,usecols=[2]).values
x = x_data.ravel()
y = y_data.ravel()
z = z_data.ravel()
g_r, r, reference_indices = RDF(x, y, z, L, rMax, dr)
g_r_list.append(g_r)
r_list.append(r)
答案 1 :(得分:0)
好吧,您在循环中省略了g_r, r, reference_indices = RDF(x, y, z, L, rMax, dr)
。假设要在循环终止后 使这些数据可用,则应将这些数据存储在某种收集对象中,例如列表或字典。我可能会使用dict,其中key = {f
和value = (g_r, r)
filenames = sorted(glob.glob('test*.csv'))
output_dict = {}
for f in filenames:
x_data = pd.read_csv(f, header=None,usecols=[0]).values
y_data = pd.read_csv(f, header=None,usecols=[1]).values
z_data = pd.read_csv(f, header=None,usecols=[2]).values
x = x_data.ravel()
y = y_data.ravel()
z = z_data.ravel()
filenames = sorted(glob.glob('test*.csv'))
g_r, r, reference_indices = RDF(x, y, z, L, rMax, dr)
output_dict[f] = (g_r, r)