如何解决迭代到一个 numpy 列表
我一直在环顾四周,但在理解代码中的错误时仍然遇到问题。我正在尝试获取大小(numstep,N,3)的 pos_list 数组中列出的 get_pos 值。 get_pos 的值显然检查为 numstep,N,3 但当我在底部调用 pos_list 时,它只打印出最后一个值。有什么我遗漏的吗?
def get_pos(p_list,N):
sys_position = np.zeros([N,3])
for i in range(N):
sys_position[i] = p_list[i].pos
return sys_position
pos_list = np.zeros([numstep,3])
for num in range(numstep):
# Update particle position
update_pos(p_list,dt,N)
# Update force
force_new = get_force(p_list,N)
# Update particle veLocity by averaging
# current and new forces
update_vel(p_list,0.5*(force+force_new),N)
# Re-define force value
force = force_new
# Increase time
time += dt
print(get_pos(p_list,N))
# Append information to data lists
pos_list = get_pos(p_list,N)
print(pos_list)
任何帮助将不胜感激我一直盯着这个太久了。
编辑:附加get_pos;列出位置数组的函数。调用 get_pos 为我获取时间 t 的位置数组,范围为 (0,numstep)。
解决方法
从它的外观来看,pos_list
正在被 get_pos 函数返回的任何内容覆盖,因此在循环的第一次迭代后不再是 numpy 数组。
编辑:
pos_list = get_pos(p_list,N)
用 pos_list
返回的 2D numpy 数组覆盖整个 get_pos(p_list,N)
3D numpy 数组。
要将 get_pos
中的 2D numpy 数组附加到 3D 数组,请在指定的索引处使用 pos_list[num,...] = get_pos(p_list,N)
。返回的二维数组将记录在 num
指向的行上,前提是二维数组与 3D 数组的形状相同,但不包括 3D 数组的第一列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。