繁体   English   中英

访问np.array的部分

[英]accessing portions of np.array

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

a[0:6,10:]

要么

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

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

编辑:串联仍然给我问题,所以我要在这里发布我的完整代码:

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.delete(a, np.s_[6:10])

np.r_[a[:6], a[10:]]

在:

a[0:6,10:]

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

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

问题是参数的数量; 它需要一个数组列表。 如果给出第二个,则将其理解为axis ,它应该是整数(因此会出错)。

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

应该管用。

另一种选择是使用列表编制索引

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表达式中, trainX []添加到串联调用中。 但是, predictorX[4*Fold_5]可能是个问题。 是否缺少: (在10:为例)? 如果只需要一个值,则需要将其转换为1d,例如: predictorX[[4*Fold_5]]

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

np.concatenate需要一个数组序列。 尝试

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

要么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM