【发布时间】:2014-03-22 01:40:45
【问题描述】:
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 的正确方法。但是对于那些条件控制变量,例如minindex 和maxindex,我无法使用map、lambda 或filter。
通过填充控制变量以功能方式创建numpy.matrix 的正确方法是什么?
编辑:
只是我想使用类似positions = map(get_positions, values)
【问题讨论】:
-
我敢打赌,
np.where和np.argmax/values.max()有一种简单的方法可以做你想做的事。也许像np.where(values-values.max() >= max_threshold)。 -
你能展示一个示例输入并期望输出吗?
-
我删除了 minindex 值来清除。使用这种方法,我想获得最高点与最新最低点的差矩阵。例如。
print get_positions([1,2,1,2,3,1])打印[[0 2][0 5][0 0]] -
看起来很简单,就像
a=[1,2,1,2,3,1]; np.where(a[1:]-a[:-1]<0)[0] + 1做同样的事情。
标签: python arrays numpy filter functional-programming