Python Numpy数组:不选择特定的行或列

Python Numpy数组:不选择特定的行或列,python,numpy,numpy-slicing,Python,Numpy,Numpy Slicing,我有一个简单的numpy数组。我想选择除第1行和第6行以外的所有行 我试过: 我得到以下错误: TypeError: bad operand type for unary ~: 'list' 正确的方法是什么?您不能用这种方法创建索引。相反,您可以创建从0到temp.size的数字范围,并删除不需要的索引: In [19]: ind = np.delete(np.arange(temp.size), [0, 5]) In [21]: temp[ind] Out[21]: array([2,

我有一个简单的numpy数组。我想选择除第1行和第6行以外的所有行 我试过:

我得到以下错误:

 TypeError: bad operand type for unary ~: 'list'

正确的方法是什么?

您不能用这种方法创建索引。相反,您可以创建从0到
temp.size
的数字范围,并删除不需要的索引:

In [19]: ind = np.delete(np.arange(temp.size), [0, 5])

In [21]: temp[ind]
Out[21]: array([2, 3, 4, 5, 7, 8, 9])
或者按照以下方式创建它:

In [16]: ind = np.concatenate((np.arange(1, 5), np.arange(6, temp.size)))

In [17]: temp[ind]
Out[17]: array([2, 3, 4, 5, 7, 8, 9])
您可以使用numpy对象,该对象通过使用给出结果输出的索引将数组断开,从而将数组连接为

np.r_[temp[1:5], temp[6:]]

上面的代码将从原始数组切片的两个数组连接起来,从而得到没有指定索引的结果数组。

您可以使用
numpy.delete
删除特定索引位置的元素:

t = np.delete(temp, [0, 5])
或者,您可以创建一个布尔数组,然后可以对索引求反:

bool_idx = np.zeros(len(temp), dtype=bool)
bool_idx[[0, 5]] = True
t = temp[~bool_idx]
可能重复的
bool_idx = np.zeros(len(temp), dtype=bool)
bool_idx[[0, 5]] = True
t = temp[~bool_idx]