Python 访问np.array的部分

Python 访问np.array的部分,python,numpy,Python,Numpy,我想快速访问np.array元素,例如从0-6加10到结尾的索引。到目前为止,我已经尝试: a[0:6,10:] 或 两者都给了我错误,第二个给了我:“TypeError:只有整数标量数组才能转换为标量索引” 编辑:concatenate仍然给我带来问题,所以我将在这里发布我的完整代码: Fold_5 = len(predictorX)/5 trainX = np.concatenate(predictorX[:3*int(Fold_5)],predictorX[4*int(Fold_5)])

我想快速访问np.array元素,例如从0-6加10到结尾的索引。到目前为止,我已经尝试:

a[0:6,10:]

两者都给了我错误,第二个给了我:“TypeError:只有整数标量数组才能转换为标量索引”

编辑:concatenate仍然给我带来问题,所以我将在这里发布我的完整代码:

Fold_5 = len(predictorX)/5
trainX = np.concatenate(predictorX[:3*int(Fold_5)],predictorX[4*int(Fold_5)])
预测器X是一个数组,其值如下

[[0.1,0.4,0.6,0.2],[..]....]

np.concatenate
接受一系列数组。试一试

np.concatenate([a[0:6],a[10:]])


np.concatenate
接受一系列数组。试一试

np.concatenate([a[0:6],a[10:]])


以下是获得所需子阵列的两种更简短的方法:

np.delete(a, np.s_[6:10])


以下是获得所需子阵列的两种更简短的方法:

np.delete(a, np.s_[6:10])

在:

0:6选择行,10:选择列。如果
a
不是2d或不够大,则会导致错误

问题是争论的数量;它需要一个数组列表。第二个,如果给定,则理解为
,它应该是一个整数(因此是您的错误)

应该有用

另一个选项是使用列表编制索引

a[0,1,2,3,4,5,10,11,...]]
np.r
是构建此类列表的便捷小工具:

In [73]: np.r_[0:6, 10:15]
Out[73]: array([ 0,  1,  2,  3,  4,  5, 10, 11, 12, 13, 14])
它实际上是
np.concatenate([np.arange(0,6),np.arange(10,15)])

不管是先索引后串联,还是先串联索引后串联索引。效率差不多
np.delete
根据“delete”区域的大小和类型,从几种方法中进行选择,包括这些方法

trainX
表达式中,向串联调用添加[]应该可以工作。但是,
predictorX[4*Fold_5]
可能是个问题。您是否缺少一个
(如10:example中所示)?如果只需要一个值,则需要将其转换为1d,例如
predictor x[[4*Fold_5]]

Fold_5 = len(predictorX)//5   # integer division in py3
trainX = np.concatenate([predictorX[:3*Fold_5], predictorX[4*Fold_5:]])
在:

0:6选择行,10:选择列。如果
a
不是2d或不够大,则会导致错误

问题是争论的数量;它需要一个数组列表。第二个,如果给定,则理解为
,它应该是一个整数(因此是您的错误)

应该有用

另一个选项是使用列表编制索引

a[0,1,2,3,4,5,10,11,...]]
np.r
是构建此类列表的便捷小工具:

In [73]: np.r_[0:6, 10:15]
Out[73]: array([ 0,  1,  2,  3,  4,  5, 10, 11, 12, 13, 14])
它实际上是
np.concatenate([np.arange(0,6),np.arange(10,15)])

不管是先索引后串联,还是先串联索引后串联索引。效率差不多
np.delete
根据“delete”区域的大小和类型,从几种方法中进行选择,包括这些方法

trainX
表达式中,向串联调用添加[]应该可以工作。但是,
predictorX[4*Fold_5]
可能是个问题。您是否缺少一个
(如10:example中所示)?如果只需要一个值,则需要将其转换为1d,例如
predictor x[[4*Fold_5]]

Fold_5 = len(predictorX)//5   # integer division in py3
trainX = np.concatenate([predictorX[:3*Fold_5], predictorX[4*Fold_5:]])
Fold_5 = len(predictorX)//5   # integer division in py3
trainX = np.concatenate([predictorX[:3*Fold_5], predictorX[4*Fold_5:]])