You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中打印含两个numpy数组的列表时仅输出最后一个数组的问题

问题:循环生成numpy数组列表时仅输出最后一个元素

我尝试打印由两个numpy数组组成的Path列表,但当前代码仅输出最后一个数组。

相关代码

import numpy as np

Ii01 = [np.array([[0, 2],
        [0, 3],
        [0, 4],
        [1, 5],
        [2, 3],
        [2, 4],
        [3, 1],
        [3, 5],
        [4, 3],
        [4, 6],
        [5, 6],
        [5, 7],
        [5, 8],
        [6, 7],
        [6, 8],
        [7, 8]]),
 np.array([[0, 2],
        [0, 3],
        [0, 4],
        [1, 5],
        [2, 3],
        [2, 4],
        [3, 1],
        [3, 5],
        [4, 3],
        [4, 6],
        [4, 7],
        [5, 8],
        [5, 9],
        [6, 7],
        [7, 5],
        [7, 8],
        [7, 9],
        [8, 9]])]

Iv01 = [np.array([[0.5928417218382795  ],
        [1.0598523225018839  ],
        [1.0038922911359835  ],
        [0.5228083275600917  ],
        [0.45152663276269006 ],
        [0.33163464481335625 ],
        [0.6382821834929433  ],
        [1.1929711967814043  ],
        [0.151430568179323   ],
        [1.2882852997187433  ],
        [0.020634234459323438],
        [0.3371248675176444  ],
        [1.0339712303899318  ],
        [0.3170028087537722  ],
        [1.0107667057670484  ],
        [0.645202745957077   ]]),
 np.array([[0.6413512609273813 ],
        [1.101096390751953  ],
        [1.1271899958869345 ],
        [0.5129288710922218 ],
        [0.44299417932362256],
        [0.39992456692863954],
        [0.6262206291648664 ],
        [1.1704277398685619 ],
        [0.0811025900626848 ],
        [0.4804819688823268 ],
        [1.1198920618079702 ],
        [0.33075425274871   ],
        [1.0794187146885863 ],
        [0.5875522376738217 ],
        [0.05687040105172758],
        [0.3822797557154033 ],
        [1.1388373266868645 ],
        [0.6979967492676955 ]])]

for i in range(0,len(Ii01)):
        uniq = np.unique(Ii01[i][:, 1][None, :])
        y =Iv01[i][:, 0]
        x = Ii01[i][:, 1][:, None] == uniq
        output = np.vstack((np.linalg.lstsq(x, y, rcond=None)[0], uniq)).T
        Path=output[:,0]
        Path = np.insert(Path, 0, 10)   #fixed inlet
print([Path])        

当前输出

[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变量,没有保存每次循环的结果。只需初始化一个空列表存储所有生成的Path,再打印该列表即可。

修改后的代码

import numpy as np

Ii01 = [np.array([[0, 2],
        [0, 3],
        [0, 4],
        [1, 5],
        [2, 3],
        [2, 4],
        [3, 1],
        [3, 5],
        [4, 3],
        [4, 6],
        [5, 6],
        [5, 7],
        [5, 8],
        [6, 7],
        [6, 8],
        [7, 8]]),
 np.array([[0, 2],
        [0, 3],
        [0, 4],
        [1, 5],
        [2, 3],
        [2, 4],
        [3, 1],
        [3, 5],
        [4, 3],
        [4, 6],
        [4, 7],
        [5, 8],
        [5, 9],
        [6, 7],
        [7, 5],
        [7, 8],
        [7, 9],
        [8, 9]])]

Iv01 = [np.array([[0.5928417218382795  ],
        [1.0598523225018839  ],
        [1.0038922911359835  ],
        [0.5228083275600917  ],
        [0.45152663276269006 ],
        [0.33163464481335625 ],
        [0.6382821834929433  ],
        [1.1929711967814043  ],
        [0.151430568179323   ],
        [1.2882852997187433  ],
        [0.020634234459323438],
        [0.3371248675176444  ],
        [1.0339712303899318  ],
        [0.3170028087537722  ],
        [1.0107667057670484  ],
        [0.645202745957077   ]]),
 np.array([[0.6413512609273813 ],
        [1.101096390751953  ],
        [1.1271899958869345 ],
        [0.5129288710922218 ],
        [0.44299417932362256],
        [0.39992456692863954],
        [0.6262206291648664 ],
        [1.1704277398685619 ],
        [0.0811025900626848 ],
        [0.4804819688823268 ],
        [1.1198920618079702 ],
        [0.33075425274871   ],
        [1.0794187146885863 ],
        [0.5875522376738217 ],
        [0.05687040105172758],
        [0.3822797557154033 ],
        [1.1388373266868645 ],
        [0.6979967492676955 ]])]

# 初始化空列表存储所有Path
Paths = []
for i in range(len(Ii01)):
        uniq = np.unique(Ii01[i][:, 1][None, :])
        y =Iv01[i][:, 0]
        x = Ii01[i][:, 1][:, None] == uniq
        output = np.vstack((np.linalg.lstsq(x, y, rcond=None)[0], uniq)).T
        Path=output[:,0]
        Path = np.insert(Path, 0, 10)   #fixed inlet
        Paths.append(Path)  # 将当前Path添加到列表中
print(Paths)        

修改点说明

  • 循环前新增Paths = [],创建空列表用于存储每次循环生成的数组
  • 循环内新增Paths.append(Path),把每次生成的Path存入列表
  • 最后打印Paths而不是[Path]

运行修改后的代码即可得到包含两个numpy数组的列表,与期望输出一致。

内容的提问来源于stack exchange,提问作者user19657580

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:55:45