Python3,将MATLAB数组代码转换为Python版本?

时间:2018-03-04 05:59:00

标签: python arrays matlab 2d nested-lists

我有一个如下所示的MATLAB代码:

dindex =find(H2(:,1)>=2400)
H2     =H2(dindex,:);

我找到了一个二维数组H2的所有行,其第一列大于2400。

如何在Python中完成?

1 个答案:

答案 0 :(得分:1)

我建议使用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]])