【问题标题】:Get array with another array indexing with NumPy使用 NumPy 获取具有另一个数组索引的数组
【发布时间】:2022-01-23 16:27:48
【问题描述】:
arr_1 = np.array([5, 1, 6, 3, 3, 10, 3, 6, 12])
arr_2 = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90])
arr_idx_num_3 = np.where(arr_1 == 3)[0]
print(arr_idx_num_3)  ## [3 4 6]

#我如何使用“arr_idx_num_3”获取这个数组 Numpy

arr_2 = [40 50 70]

【问题讨论】:

  • arr_2[arr_1 == 3] 如果保证两个数组的大小相同,也可以使用。

标签: python numpy


【解决方案1】:

就像这样使用它:

print(arr_2[arr_idx_num_3])

输出:

>>> [40 50 70]

【讨论】:

    【解决方案2】:

    一个简单的 for 循环就可以解决问题。

    import numpy as np
    
    arr_1 = np.array([5, 1, 6, 3, 3, 10, 3, 6, 12])
    arr_2 = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90])
    
    
    idx_num = 3
    arr_idx_num = []
    for i in range(len(arr_1)):
        if arr_1[i] == idx_num:
            arr_idx_num.append(arr_2[i])
    

    【讨论】:

      【解决方案3】:

      一种方法是:

      indices = [i for i, x in enumerate(arr_1) if x == 3]
      arr_2[indices]
      

      【讨论】:

        【解决方案4】:
        import numpy as np
          
        arr_1 = np.array([5, 1, 6, 3, 3, 10, 3, 6, 12])
        arr_2 = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90])
        
        arr_idx_num_3 = np.nonzero(arr_1==3)
        print(arr_2[arr_idx_num_3])
        

        【讨论】:

          猜你喜欢
          • 2011-07-27
          • 1970-01-01
          • 1970-01-01
          • 2016-03-09
          • 1970-01-01
          • 1970-01-01
          • 2021-03-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多