numpy.delete与slice使用疑问:如何一步生成指定维度无无效0的数组
解决numpy删除指定索引后所有列的问题
问题根源
你用slice(1344,-1)时,numpy切片遵循左闭右开规则:slice(a,b)包含索引a但不包含b。所以slice(1344,-1)只会删除从1344到倒数第二列的所有列,最后一列(索引-1)完全没被处理,这就是无效0残留的原因。
一行代码解决方案
方案1:直接切片(最简洁高效)
直接保留前1344列,完全避开要删除的部分:
data = data[:, :1344]
方案2:用np.delete修正切片范围
如果一定要用np.delete,用数组的列数代替-1,确保覆盖所有要删除的列:
data = np.delete(data, slice(1344, data.shape[1]), axis=1)
data.shape[1]是数组的总列数,slice(1344, data.shape[1])会包含从1344到最后一列的所有索引(左闭右开规则刚好覆盖目标范围)。
验证结果
执行后检查输出:
print(data.shape) # 输出 (200000, 1344) print(data[0,1340:1344]) # 输出 [435 432 426 438],无无效0
内容的提问来源于stack exchange,提问作者cerv21
相关产品推荐
相关产品推荐

