Python中为numpy数组列表赋值新变量的实现问题
问题
尝试将numpy数组列表Path赋值给新变量K,但无法得到预期输出。
当前代码
import numpy as np Path=[np.array([10. , 0.6382821834929432 , 0.5928417218382795 , 0.5542698411479658 , 0.6677634679746701 , 0.8578897621707481 , 0.6544597670890333 , 0.32706383813570833, 0.8966468940380192 ]), np.array([10. , 0.6262206291648664 , 0.6413512609273813 , 0.5417310533794202 , 0.763557281407787 , 0.580075670670837 , 0.48048196888232686, 0.8537221497408958 , 0.35651700423205657, 0.9720842635477158 ])] for i in range(0,2): K=Path[i] print([K])
当前输出
[array([10. , 0.6382821834929432 , 0.5928417218382795 , 0.5542698411479658 , 0.6677634679746701 , 0.8578897621707481 , 0.6544597670890333 , 0.32706383813570833, 0.8966468940380192 ])] [array([10. , 0.6262206291648664 , 0.6413512609273813 , 0.5417310533794202 , 0.763557281407787 , 0.580075670670837 , 0.48048196888232686, 0.8537221497408958 , 0.35651700423205657, 0.9720842635477158 ])]
期望输出
[array([10. , 0.6382821834929432 , 0.5928417218382795 , 0.5542698411479658 , 0.6677634679746701 , 0.8578897621707481 , 0.6544597670890333 , 0.32706383813570833, 0.8966468940380192 ]), array([10. , 0.6262206291648664 , 0.6413512609273813 , 0.5417310533794202 , 0.763557281407787 , 0.580075670670837 , 0.48048196888232686, 0.8537221497408958 , 0.35651700423205657, 0.9720842635477158 ])]
解决方案
你的问题出在循环里每次只取Path的单个元素赋值给K,然后打印单个元素的列表,所以输出是两个独立的单元素列表。
要得到期望的输出,直接把整个Path赋值给K即可,不需要循环:
import numpy as np Path=[np.array([10. , 0.6382821834929432 , 0.5928417218382795 , 0.5542698411479658 , 0.6677634679746701 , 0.8578897621707481 , 0.6544597670890333 , 0.32706383813570833, 0.8966468940380192 ]), np.array([10. , 0.6262206291648664 , 0.6413512609273813 , 0.5417310533794202 , 0.763557281407787 , 0.580075670670837 , 0.48048196888232686, 0.8537221497408958 , 0.35651700423205657, 0.9720842635477158 ])] # 直接赋值整个列表 K = Path # 打印K即可得到期望输出 print(K)
如果需要创建Path的副本(避免后续修改K影响原Path),可以用列表拷贝:
# 浅拷贝,适用于numpy数组不需要深拷贝的场景 K = Path.copy() # 或者深拷贝,确保完全独立 import copy K = copy.deepcopy(Path) print(K)
这样打印出来的结果就和你期望的一致了。
内容的提问来源于stack exchange,提问作者Klimt865
相关产品推荐
相关产品推荐

