无法正确切片数组

Unable to slice an array correctly

我有以下数组

import numpy as np
T = np.array(([1,-1,0,0,0,0],
              [3,0,5,0,0,0],
              [0,-1,0,9,0,0],
              [0,0,0,0,-2,1],
              [3,1,0,0,2,0],
              [1,-2,1,0,2,2]))

我想删除数组的第一列和最后一行。所以我应该得到:

T = [[-1 0 0 0 0],
    [0 5 0 0 0],
    [-1 0 9 0 0],
    [0 0 0 -2 1],
    [1 0 0 2 0]]

我写了下面一行代码:

T = T[:len(T)-1][1:len(T[0])]

但我没有得到预期的结果。我得到的结果是这样的:

[[ 3  0  5  0  0  0]
 [ 0 -1  0  9  0  0]
 [ 0  0  0  0 -2  1]
 [ 3  1  0  0  2  0]]

谁能告诉我我做错了什么以及切片数组的正确方法?

如果像以前那样对数组进行切片,返回的是另一个具有相同维数的数组。所以你的代码相当于:

T = T[:len(T)-1]
T = T[1:len(T[0])]

改为:

T[:len(T)-1, 1:len(T[0])]

或者只是

T = T[:-1, 1:]

你只是删除第一个列表而不是所有列表中的第一个元素你可以尝试这样的事情

T = [i[1:] for i in T]

通过使用这一行,您可以在所有嵌套列表中循环并从中删除第一个元素

您可以阅读有关 list comprehension

的更多信息