【问题标题】:Creating a new list from the means of a list of a function从函数列表中创建一个新列表
【发布时间】:2018-05-26 13:31:23
【问题描述】:

我已经定义了一个名为 CalcspeedAngle 的函数

def CalcspeedAngle(k):
    xpos = [1,2,3,4,5,6,7,8,9]
    ypos = [10,11,12,13,14,15,16,17,18]
    turnrates = [entry/3.099 for entry in xpos][::k]   
    vts = [entry/3.099 for entry in ypos][::k]
    return(turnrates,vts)

那我写

turnrates, vts = CalcspeedAngle(k)

我的问题是:如何创建两个新列表(m1list 和 m2list),其中包含 k = 1、2、3、4、5、6、7、8、9、10 的平均转率和 vts ,15,20?换句话说,我该如何创建:

m1list = [mean(flattened(turnrates(k=1))), mean(flattened(turnrates(k=2))), ...]
m2list = [mean(flattened(vts(k=1))), mean(vts(turnrates(k=2))), ...]

任何帮助将不胜感激。

【问题讨论】:

  • 您应该首先修复您的代码缩进 - 我并没有真正理解您的问题......还将m1ist,m2list(数据)中的内容添加到您的问题以及您对 flatten 的确切含义, 为什么你使用 turnrates 作为函数等。
  • 我的问题是我的代码不起作用。数据相当复杂。这就是为什么我没有包括它。当我插入不同的k时,列表的turnrates和vts列表应该不同。

标签: python python-3.x function numpy


【解决方案1】:

简化代码的一种方法是对 range(10) 执行一次迭代,解压缩 2 个列表列表,计算每个列表的平均值,并将它们附加到结果列表中:

def lists_of_means():
    m1list = []
    m2list = []

    for i in range(10):
        turnrates, vts = CalcspeedAngle(i)
        m1list.append(np.mean(turnrates))
        m2list.append(np.mean(vts))

    return m1list, m2list

【讨论】:

  • 感谢您的帮助。如果我输入这段代码,然后在下一行输入 m1list,那么 Python 会给我一个空列表 []。如果我在下一行输入 m1list, m2list = lists_of_means() 而不是 m1list,那么 Python 会显示一个错误(TypeError: unsupported operand type(s) for /: 'list' and 'int')。你知道这是为什么吗?
  • 对不起,没有。我建议您可以通过提供minimal reproducible example 来改进您的问题。这将包括一个模拟 minimal(但完整)CalcspeedAngle 类。
  • 啊哈!我通过使用 m1list.append(np.mean([item for sublist in turnrates for item in sublist])) 而不是 m1list.append(np.mean(turnrates)) 解决了这个问题
  • @IwanPhillips,如果这有帮助,请考虑接受(左侧的绿色勾号)。或者,当然,您可以随意将您的解决方案作为单独的答案发布。
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多