我无法理解B = A(~any(A < threshold, 2), :);
(在MATLAB中)给出的数组A
的尺寸为N x 3的内容。
最终,我正在尝试实现一个函数在Python中执行相同的操作(到目前为止,我有类似B = A[not any(A[:,1] < threshold), :]
的东西,我知道这是不正确的),我想知道什么是numpy相当于这样的行动就是。
谢谢!
答案 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)]