Python多维数组迭代逐行删除首索引元素的实现方法
实现方案
你需要的最终结果是每行长度不等的不规则序列,无法用标准numpy数组存储(numpy要求同维度所有元素长度一致),因此最终输出为嵌套Python列表,实现代码如下:
通用实现(适配任意行内容的原始数组)
import numpy as np # 原始numpy数组定义 Values = np.array([[100,123,135.3,139.05,156.08,163.88,173.72], [100,123,135.3,139.05,156.08,163.88,173.72], [100,123,135.3,139.05,156.08,163.88,173.72], [100,123,135.3,139.05,156.08,163.88,173.72], [100,123,135.3,139.05,156.08,163.88,173.72], [100,123,135.3,139.05,156.08,163.88,173.72], [100,123,135.3,139.05,156.08,163.88,173.72]]) # 核心逻辑:按行索引切片,第i行(0索引)取从i位置开始的后续元素 result = [row[i:].tolist() for i, row in enumerate(Values)]
简化实现(适配所有行内容相同的场景)
如果你的原始数组所有行内容完全一致,可以直接复用第一行切片,性能更高:
first_row = Values[0].tolist() result = [first_row[i:] for i in range(len(first_row))]
验证输出
执行打印即可得到你需要的结果:
for row in result: print(row)
输出结果:
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72] [123, 135.3, 139.05, 156.08, 163.88, 173.72] [135.3, 139.05, 156.08, 163.88, 173.72] [139.05, 156.08, 163.88, 173.72] [156.08, 163.88, 173.72] [163.88, 173.72] [173.72]
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

