【问题标题】:Extracting values from an array using a logical array使用逻辑数组从数组中提取值
【发布时间】:2018-04-23 07:49:36
【问题描述】:

我有以下 MATLAB 代码,我想使用 Python 进行复制。

MATLAB 代码为 when xDiff == 2 创建一个逻辑数组,然后使用该逻辑数组从 tDiff 数组中提取相应的值以创建结果数组 tTacho

MATLAB 代码:

tTacho = tDiff(xDiff == 2)

【问题讨论】:

    标签: python arrays matlab indexing


    【解决方案1】:

    您可以使用 NumPy 执行 boolean indexing
    例如:

    import numpy as np
    
    x_diff = np.array([0, 2, 2, 0, 0, 2])
    t_diff = np.array([0, 1, 2, 3, 4, 5])
    
    print(t_diff[x_diff == 2])
    

    给予:

    array([1, 2, 5])
    

    如果你不想使用 NumPy,那么你可以使用 list comprehensionszip

    x_diff = [0, 2, 2, 0, 0, 2]
    t_diff = [0, 1, 2, 3, 4, 5]
    
    print([t for t, x in zip(t_diff, x_diff) if x == 2])
    

    给予:

    [1, 2, 5]
    

    【讨论】:

      【解决方案2】:

      您也可以使用列表索引。

       tDiff=[1,2,4,5,6,6,7]
       xDiff=[2,3,2,2,2,2,2]
       for x in range(0,len(xDiff)):
           if xDiff[x]==2:
              print tDiff[x]
      

      如果这有帮助的话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-16
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多