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

问题描述 投票:1回答:1

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

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

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

如何在Python中完成?

python arrays matlab 2d nested-lists
1个回答
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]])
© www.soinside.com 2019 - 2024. All rights reserved.