Python3,将 MATLAB 数组代码转换为 Python 版本?
Python3, converting MATLAB array code to Python version?
我有一个如下所示的 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]])
我有一个如下所示的 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]])