向空数组追加向量结果不符求助:期望数组却得到向量
嘿,我来帮你解决这个数组追加的问题!看起来你是想把多个向量攒成一个二维数组(每个元素是一个向量),但现在不小心把所有向量的元素揉成了一个一维向量,对吧?我给你分两种常见场景说解决方案:
如果你用的是Python(NumPy)
很多人踩坑都是因为初始化空数组的方式不对,直接用np.array([])得到的是一维数组,追加向量时会自动扁平化合并。正确的做法有两种:
方法1:提前指定二维空数组,用堆叠函数追加
比如你的向量是3维的,初始化时就定义好二维结构,再用vstack纵向堆叠:import numpy as np # 初始化一个0行3列的空二维数组,和你的向量维度匹配 arr = np.empty((0, 3)) # 假设你的向量是这样的 vec = np.array([z, z, z]) # 追加向量,保持二维结构 arr = np.vstack([arr, vec])多次运行追加后,
arr就是[[z,z,z], [z,z,z], ...]这种你想要的结构。方法2:先存普通列表,最后转成数组
这个方法更灵活,不用担心维度问题:vec_list = [] # 把每个向量都添加到列表里 vec_list.append(vec1) vec_list.append(vec2) # 最后转成NumPy数组,自动变成二维结构 arr = np.array(vec_list)
如果你用的是MATLAB
MATLAB里的逻辑类似,直接用[]初始化空数组后,用逗号追加会横向拼接成一维,得用分号来纵向堆叠行向量:
arr = []; vec = [z, z, z]; % 你的行向量 % 用分号纵向追加,保证每次加的是一行 arr = [arr; vec];
如果你的向量是列向量,就用逗号横向追加,最终得到的就是列向量组成的二维数组。
为啥之前不对?
核心问题是维度不匹配:你初始的空数组是一维的,追加一维向量时,程序会默认把它们合并成更长的一维数组,而不是创建二维结构。只要让初始数组和待追加的向量保持维度一致(比如都是二维的),或者用专门的堆叠函数,就能得到你想要的“z个向量组成的数组”啦。
内容的提问来源于stack exchange,提问作者Hawkeye
相关产品推荐
相关产品推荐

