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
不应该这样调用,这不可能是创建{minindex
和maxindex
,我不能使用map
,lambda
,或{
通过填充控制变量以函数方式创建numpy.matrix
的正确方法是什么?在
编辑:
我只想使用positions = map(get_positions, values)
我不确定这是否正是您要查找的,但是
reduce
中的functools
在这里可以用来积累一个依赖于输入列表的“过去”值的状态。一旦计算出与每个输入相对应的状态列表,就可以使用filter
删除不需要的条目,最后使用map
来提取所需的信息。在还要注意使用
enumarate
将索引注入到列表中。在运行此程序时,
^{pr2}$states
将保持不变结果是
[[0, 2], [0, 5]]
。如果您愿意,可以在注释中附加一个[0, 0]
,以匹配所需的输出。在还要特别注意
reduce
调用结束时的[1:],它删除了我注入的初始状态。在最后一点,您可以在calc_diff中添加threshold的过滤条件,并避免后面的过滤步骤,但我发现这种方法更灵活一些。在
相关问题 更多 >
编程相关推荐