[英]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.