[英]Nested list comprehension for numpy
我有一个似乎无法解决的问题。
我正在从文件的行(每100行包含30个值的行)中构建一个形状为(100,30)的numpy数组,我需要将此数组转换为形状(100,),其中n为均值来自原始数组每一行的最后一个值。
我的目标是在同一行中完成此操作,因此我尝试了嵌套列表推导,但是我觉得完全迷失了方向,我不确定自己在做什么。
这就是我到目前为止所得到的,这为我提供了一个正确的形状数组,但具有(我相信)错误的值。
def perf_n_last(n):
a = np.array([np.mean([i for j in range(len(i)-1, len(i)-(n+1), -1)]) for i in np.loadtxt('myfile.txt')])
print(a.shape) #outputs (100, )
输入和输出应类似于:
input_f = [[1. 2. 3. 4. 5.]
[2. 3. 4. 5. 6.]
[3. 4. 5. 6. 7.]]
#We assume n = 2
output_f = [4.5 5.5 6.5]
我也乐于接受有关列表切片的建议。 感谢您的帮助!
如果我正确理解了您的问题,那么使用numpy可以非常快速地完成此操作,假设2d数组中的每一行的长度都相同:
def perf_n_last(n):
return np.loadtxt("myfile.txt")[:,-n:].mean(1)
加载文件,切片以包括所有行,但仅包括最后n
列,并取每个结果行的平均值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.