【问题标题】:Select arrays from a list从列表中选择数组
【发布时间】:2012-02-17 13:58:58
【问题描述】:

我使用 python,我有一个非常基本的问题。 我是一个包含 1000 个元素的数组。我想选择这个数组的 100 个位置。 我想做类似的事情

     selected_value=array[i for i in position_to_select]

我怎样才能做到这一点?

【问题讨论】:

    标签: python arrays list


    【解决方案1】:

    假设你有一个列表arr,你想从中选择位置0、4、2的元素:

    >>> arr = [1, 2, 3, 4, 5, 6, 7]
    >>> selected = [arr[i] for i in [0, 4, 2]]
    >>> selected
    [1, 5, 3]
    >>> 
    

    我认为与您的原始代码示例的主要区别是在列表理解中使用arr[i]。列表推导式创建一个新列表。它不用于索引现有列表。

    【讨论】:

    • 谢谢!如果我想选择所有不属于列表的元素怎么办?我尝试使用 selected = [arr[i] for i not in [0, 4, 2]],但出现无效语法错误。
    • @Matteo:最有效的方法是提前计算索引列表,然后使用相同的代码。预先计算可以是任意的,例如不满足某个谓词的索引
    【解决方案2】:
    >>> selected_value = [array[i] for i in position_to_select]
    

    【讨论】:

      【解决方案3】:

      如果您经常使用大型数组,请查看numpy

      import numpy as np
      
      arr = np.array([3., 4., 3., 7., 3., 6., 9., 1., 2., 5.])
      position_to_select = [1, 3, 6]
      
      selected_value = arr[position_to_select]
      
      # array([ 4.,  7.,  9.])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2019-12-08
        相关资源
        最近更新 更多