0

我需要访问这个 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]

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

4

1 回答 1

6

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

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

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

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

于 2012-09-01T17:49:33.077 回答