如何将matlab函数max(y(x> 3)> 2)转换为numpy in single line

时间:2013-10-17 01:46:29

标签: python matlab numpy

我想将matlab函数转换为all,any,max min为numpy。

因为这些函数将复合表达式作为输入,所以想知道如何在numpy中实现相同的效果。

代表。最大(Y(X→3)→2)

x = [1,2,3,4,5,6]
y = [2,4,6,8,9,2]
在matlab中我会得到答案为9

如何在numpy中编写上述max函数,以便它接受不同的表达式。

max(x>3) - ans 6
max((x>3)>5) - ans 6
max((x>3) & (x<6)) - ans 5

非常感谢您提前投入。

2 个答案:

答案 0 :(得分:6)

一般来说(http://wiki.scipy.org/NumPy_for_Matlab_Users)是从MATLAB进行转换的非常好的指南 - &gt; numpy的

x = np.array(x)
np.max(x[x>3])
np.max(x[(x>3)*(x>5)])
np.max(x[(x>3)*(x<6)])

答案 1 :(得分:1)

不是那么短,而是单行:

max([y[i] for i in range(len(y)) if x[i] > 3 and y[i]>2])