首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中过滤带有条件控制变量的数组以创建numpy矩阵

在python中过滤带有条件控制变量的数组以创建numpy矩阵
EN

Stack Overflow用户
提问于 2014-02-20 20:47:45
回答 1查看 621关注 0票数 2
代码语言:javascript
运行
复制
import numpy as np
    def get_positions(values, mintreshold=0.1):
        maxindex = 0
        result_row = np.zeros(np.shape((0, 0)), dtype=int)
        result = np.matrix(result_row)
        result_index = 0
        for index in xrange(len(values)):
            diff = values[maxindex] - values[index]
            if diff < 0:
                maxindex = index
            elif diff >= mintreshold:
                result[result_index, 1] = index
                result = np.vstack((result, result_row))
                result_index += 1
        return result

如你所见,我有一个函数,给我给定列表的位置。只需过滤它。所以我知道numpy.matrix不应该这样调用,这不可能是创建numpy.matrix的正确方法。但是对于那些条件控制变量,如minindexmaxindex,我不能使用maplambdafilter

通过填充控制变量以函数方式创建numpy.matrix的正确方法是什么?

编辑:我只是想使用类似于positions = map(get_positions, values)的东西

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 19:36:25

我不确定这是否正是您所要寻找的,但是可以在这里使用来自functoolsfunctools来积累依赖于输入列表的“过去”值的状态。一旦计算出与每个输入对应的状态列表,就可以使用filter消除不想要的条目,并最终使用map提取所需的信息。

还请注意使用enumarate将索引注入列表。

代码语言:javascript
运行
复制
from functools import reduce

def calc_diff(state, val):
    max=state[-1]['max']
    diff=max-val
    if (diff<0): max=val
    state.append({'max': max, 'diff': diff})
    return state

in_list=[1,2,1,2,3,1]

states=reduce(calc_diff, in_list, [{'max': 0}])[1:]

result=list(map(lambda s: [0, s[0]], filter(lambda s: s[1]['diff']>0.1, enumerate(states))))

当您运行此程序时,states将保存

代码语言:javascript
运行
复制
[{'diff': -1, 'max': 1},
 {'diff': -1, 'max': 2},
 {'diff':  1, 'max': 2},
 {'diff':  0, 'max': 2},
 {'diff': -1, 'max': 3},
 {'diff':  2, 'max': 3}]

结果将是[[0, 2], [0, 5]]。如果您愿意,可以在注释中追加一个[0, 0]以匹配您想要的输出。

还要特别注意1:在reduce调用的末尾,它移除了我注入的初始状态。

最后,您可以在calc_diff中添加阈值筛选条件,并避免稍后的筛选步骤,但我发现这种方法更灵活一些。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21919223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档