如何访问长度递增的NumPy数组切片?解决w[0:0]返回空的问题
NumPy数组递增切片调整方案
原代码
for iter in range(0, max_iter): print("in loop") print(w[0:iter]) print(X[0:iter])
问题描述
尝试通过循环获取长度递增的NumPy数组切片,但首次循环中w[0:0]返回空数组[],而非预期的第一个元素,需调整切片方式。
解决方案
NumPy切片遵循[起始索引:结束索引]规则,包含起始元素但不包含结束元素,因此0:0必然返回空切片。可通过以下两种方式调整:
- 调整循环起始值
将循环的起始值设为1,切片保持0:iter,这样第一次循环取0:1即可获得第一个元素,后续迭代依次获取前2个、前3个元素:
for iter in range(1, max_iter + 1): print("in loop") print(w[0:iter]) print(X[0:iter])
- 保持循环起始值,修改切片结束索引
若必须从0开始循环,将切片结束索引改为iter + 1,同时添加边界判断避免索引越界:
for iter in range(0, max_iter): print("in loop") # 限制结束索引不超过数组长度 end_w = min(iter + 1, len(w)) print(w[0:end_w]) end_x = min(iter + 1, len(X)) print(X[0:end_x])
内容的提问来源于stack exchange,提问作者Brado11
相关产品推荐
相关产品推荐

