【问题标题】:how to use the row [a,b] to index another array as data[a:b]?如何使用行 [a,b] 将另一个数组索引为 data[a:b]?
【发布时间】:2011-08-11 10:11:00
【问题描述】:

我有两个数组,第一个是 (n, 2) 数组,其中包含数据池中选择的开始和结束,第二个是数据池。

一般的想法是使用第一个从第二个中提取相关数据,但我不知道如何使用 numpy.

我找到了以下解决方案,但看起来很笨拙:

relevant_data = datapool[np.arange(*selection[0])]]

有什么想法吗?

update :嵌套索引的能力是一大优势(获得选择的子部分)。

【问题讨论】:

    标签: python indexing numpy


    【解决方案1】:

    使用slice:

    In [1]: row = [4,7]
    
    In [2]: data = range(10000)
    
    In [3]: data[slice(*row)]
    Out[3]: [4, 5, 6]
    

    【讨论】:

    • 谢谢,这可能是我想要的。切片表示法允许嵌套索引(获取行的子部分),这在我的情况下很有用。我仍然担心拆开行的成本,但我不知道如何避免它。
    【解决方案2】:

    比使用slice() 更简单的解决方案是

    row = [4, 7]
    data[row[0]:row[1]]
    

    这可能更容易阅读,因为它更明确一些。

    【讨论】:

    • 谢谢,我喜欢 pythonic 的清晰度,但如上所述,对行进行子索引的能力可能很有用。不过,我会“计时”解决方案,看看是否存在很大的性能差异。
    • @Lionel:当然你可以使用data[selection[index, 0]:selection[index, 1]]
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 2012-12-18
    • 2013-06-12
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    相关资源
    最近更新 更多