【发布时间】:2019-03-20 14:29:36
【问题描述】:
我有一个似乎无法解决的问题。
我正在从文件的行(每行 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]
我也愿意接受有关列表切片的建议。感谢您的帮助!
【问题讨论】:
-
您能否分享一个较小的数据样本和预期的输出,以便重现它?
-
你为什么要求这个只用完一行?与打开包装相比,您所拥有的东西更不容易辨认。
-
为什么不直接从文件中创建 (100,30) 数组然后取其平均值?
-
@acdr 你完全正确,这是来自同学的挑战,不是一个好主意。
标签: python numpy list-comprehension