【问题标题】:indexing numpy multidimensional arrays索引numpy多维数组
【发布时间】:2012-09-01 17:45:29
【问题描述】:

我需要访问这个 numpy 数组,有时只有最后一列为 0 的行,有时是最后一列值为 1 的行。

y = [0  0  0  0
     1  2  1  1 
     2 -6  0  1
     3  4  1  0]

我必须一遍又一遍地这样做,但我宁愿避免创建重复的数组或每次都必须重新计算。有没有办法可以识别相关的索引并调用它们?这样我就可以做到这一点:

>>print y[LAST_COLUMN_IS_0] 
[0  0  0  0
3  4  1  0]

>>print y[LAST_COLUMN_IS_1] 
[1  2  1  1 
2 -6  0  1]

附:数组中的列数永远不会改变,它总是有 4 列。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用 numpy 的 boolean indexing 来识别您要选择的行,并使用 numpy 的精美索引/切片来选择整行。

    print y[y[:,-1] == 0, :]
    print y[y[:,-1] == 1, :]
    

    您可以像往常一样保存 y[:,-1] == 0... == 1,因为它们只是 numpy 数组。

    y[:,-1] 选择整个最后一列,== 相等性检查按元素进行,产生一个布尔数组。)

    【讨论】:

    • +1,它有效。但我无法理解y[:,-1] == 0 是什么。这是一个numpy数组,但不是一个范围?然后如何使用它来索引?
    • @Zach, scipy.org/…
    • 谢谢。快速附加问题,然后我如何从结果中选择一列。例如,要选择第一列,这不起作用:y[y[:,-1] == 0, :][0]
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2018-01-22
    • 1970-01-01
    • 2019-01-04
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多