D_values = {}
Average = [ ]
for path in glob("F:\Thermal Motion\*.txt"):
t, x, y = np.loadtxt(path, unpack=True)
D_values[path] = [((x[i]/.115 - x[0]/.115)**2 + (y[i]/.155 - y[0]/.155)**2)**0.5
for i in range(len(x))]
print D_values[path]
当我打印D_values
时,它会给出一堆列表。我需要做的是找到所有数组中每个第n个元素的平均值。我只是不知道我将如何引用字典中的特定列表。就像D_values[path]
给出列表
[1,2,3,4,...]
[23,234,43,...]
[5,6,7,...]
我想在Average[(1,23,5,...) (2,234,7,...)...]
答案 0 :(得分:1)
这基本上是通过np.mean
为您完成的。但是您希望首先将数据转换为数组,而不是dict。您可以这样说:
D_values = [] # an empty list, not dict
Average = []
for path in glob("F:\Thermal Motion\*.txt"):
t, x, y = np.loadtxt(path, unpack=True)
#append to list instead of dict:
D_values.append([((x[i]/.115 - x[0]/.115)**2 + (y[i]/.155 - y[0]/.155)**2)**0.5
for i in range(len(x))])
print D_values
然后你有D_values
列表。现在您可以使用np.mean
:
np.mean(D_values, axis=0)
axis=0
参数告诉函数沿第一轴(列)平均。
因此,如果D_values
为[[1,2,3], [23,234,43], [5,6,7]]
,那么您的意思是:[ 9.66666667, 80.66666667, 17.66666667]
Protip:您不必使用列表解析来构建D_values,因为t
,x
和y
是数组。你可以这样做:
D_values = [] # an empty list, not dict
Average = []
for path in glob("F:\Thermal Motion\*.txt"):
t, x, y = np.loadtxt(path, unpack=True)
#append to list instead of dict:
D_values.append((((x - x[0])/.115)**2 + ((y - y[0])/.155)**2)**0.5)
print D_values