MATLAB“任意”条件删除转换为Python

时间:2016-07-20 13:44:39

标签: python matlab numpy

我无法理解B = A(~any(A < threshold, 2), :);(在MATLAB中)给出的数组A的尺寸为N x 3的内容。

最终,我正在尝试实现一个函数在Python中执行相同的操作(到目前为止,我有类似B = A[not any(A[:,1] < threshold), :]的东西,我知道这是不正确的),我想知道什么是numpy相当于这样的行动就是。

谢谢!

1 个答案:

答案 0 :(得分:4)

真的没什么区别。在MATLAB中,您使用ANY沿着行执行any(...,2)。在NumPy中,您有axis来表示这些维度,对于2D数组,它将是np.any(...,axis=1)

因此,NumPy等效实现将是 -

import numpy as np

B = A[~np.any(A < threshold,axis=1),:]

此索引在NumPy术语中也称为slicing。因为,我们沿着第一个轴切割,我们可以沿着其余的轴放下所有元素选择。所以,它会简化为 -

B = A[~np.any(A < threshold,axis=1)]

最后,我们可以使用方法ndarray.any并跳过提及axis参数来进一步缩短代码,就像这样 -

B = A[~(A < threshold).any(1)]