索引错误,如果列具有值,则从数组中删除行

时间:2013-09-17 19:33:18

标签: python arrays numpy indexing

我有一个包含四列的数组'x'。

对于每一行,如果第4列的值为1,那么我想删除整行:

x = np.array([[1,2,3,0],[11,2,3,24],[1,22,3,1],[1,22,3,1], [5,6,7,8], [9,10,11,1]])
for i in range(0,len(x)):
    if x[i][4]==0:
        x=np.delete(x, i,0)

我收到以下错误:

  

追踪(最近的呼叫最后):
        文件“”,第2行,在中           如果x [i] [4] == 0:
      IndexError:索引越界

3 个答案:

答案 0 :(得分:4)

你试图用[4]引用第四列,但因为它基于零而实际上是[3]

答案 1 :(得分:3)

您可以使用indexing

>>> x[x[:,3] != 1]
array([[ 1,  2,  3,  0],
       [11,  2,  3, 24],
       [ 5,  6,  7,  8]])

答案 2 :(得分:0)

列表的索引从0开始。因此,由于有4个元素,索引是:0,1,2,3。因此,如果您必须检查第4个元素,请使用索引3。

if x[i][3]==0:
     pass

这将有效