如何遍历numpy数组指定区域并为对应位置赋值
问题原因
你原有代码的错误点有两个:
- 外层循环
for w in Final_array[999:2000]:没有用到变量w,属于无效冗余循环 - 内层循环赋值时依然使用从0开始计数的
y作为行索引,会直接覆盖你已经赋值完成的前1000行y列数据,完全没有触达第1000到1999行的目标区域
最优解决方案(推荐)
numpy支持直接通过切片批量赋值,不需要写for循环,执行效率更高,代码也更简洁:
import numpy as np # 初始化数组 Final_array = np.zeros([2000,3]) # 给前1000行y列(索引为1)赋值 Final_array[:1000, 1] = y_coords1 # 给后1000行y列赋值 Final_array[1000:, 1] = y_coords2
注意:请提前确认
y_coords1和y_coords2的长度均为1000,否则会触发维度不匹配报错。
如果你坚持使用for循环实现,修改后的代码如下:
# 前1000行y列赋值(原有逻辑正确) for y in range(len(y_coords1)): Final_array[y, 1] = y_coords1[y] # 后1000行y列赋值,行索引需要加上1000的偏移量 for y in range(len(y_coords2)): Final_array[1000 + y, 1] = y_coords2[y] print(Final_array)
内容的提问来源于stack exchange,提问作者Roxana Sida
相关产品推荐
相关产品推荐

