我有一个MATLAB代码,如下所示:
dindex =find(H2(:,1)>=2400)
H2 =H2(dindex,:);
我找到了一个二维数组H2的所有行,其中第一列大于2400。
如何在Python中完成?
我建议使用numpy
,它是一个非常强大的python库,使这种任务变得微不足道。
numpy.where()
是你在这里寻找的:
>>> import numpy as np
>>> arr = np.array([[2500, 1, 1, 1, 1], [2300, 1, 1, 1, 1], [2600, 1, 1, 1, 1]])
>>> arr
array([[2500, 1, 1, 1, 1],
[2300, 1, 1, 1, 1],
[2600, 1, 1, 1, 1]])
>>> np.where(arr[:,0] >= 2400)
(array([0, 2], dtype=int64),)
如果您只想保留满足此条件的行,可以使用numpy
索引来执行此操作:
>>> arr = np.array([[2500, 1, 1, 1, 1], [2300, 1, 1, 1, 1], [2600, 1, 1, 1, 1]])
>>> arr
array([[2500, 1, 1, 1, 1],
[2300, 1, 1, 1, 1],
[2600, 1, 1, 1, 1]])
>>> arr = arr[np.where(arr[:,0] >= 2400)]
>>> arr
array([[2500, 1, 1, 1, 1],
[2600, 1, 1, 1, 1]])